
いつも大変助かっております。
下記のようなテーブル値関数を作成したのですが、条件(Where句)が加味されずにテーブルが返ります。
このような結果になってしまう原因をご存知の方、ご教示ください。
<テーブル>
CREATE TABLE Table1(
[性別] [int] NULL,
) ON [PRIMARY]
GO
CREATE TABLE Table2(
[physical_name] [nvarchar](100) NOT NULL,
[target_value] [nvarchar](10) NOT NULL,
) ON [PRIMARY]
GO
<テーブルの中身>
insert into Table1 values (1);
insert into Table1 values (5);
insert into Table1 values (99)
insert into Table2 values(男女の別,1);
insert into Table2 values(男女の別,2);
insert into Table2 values(男女の別,5);
<テーブル値関数>
CREATE FUNCTION Verify(
@Trandata nvarchar(100) ,
@Physicalname nvarchar(100)
)RETURNS TABLE
AS
RETURN
(
select * from Table1
where @Trandata >
(select MAX(target_value) from Table2 where physical_name = @Physicalname)
)
<呼び出しSQL>
select * from Verify('性別','男女の別')
<呼び出しSQL結果>
希望…Table1の 性別=99 のみ返る
現実…Table1の 性別=*が返る
No.1ベストアンサー
- 回答日時:
where @Trandata > (select MAX(target_value) from Table2 where physical_name = @Physicalname)
これでは
@Trandataに入っている文字列と、((select MAX(〜 との比較
になり、
select * from Verify('性別','男女の別')
ならば
'性別' > 〜
と書いたのと同じになります。
対処法としては
・SQLを文字列として作成して、その文字列を実行する。
「動的 SQL Server」とかで検索すると出てきます。
なんでも有りになるので、セキュリティに注意。
・Case When 等で @Trandata の内容によって列を選ぶ
Case @Trandata When '性別' then 性別 when 〜 end > (select MAX(〜
SQLが長くなるし、テーブルが変わったら変更が必要
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECT 文の NULL列は?
-
SQLにて指定日付より前、かつ最...
-
PostgreSQL レコードからアイテ...
-
javaでデータベース上のテーブ...
-
AccessのSQL 部分一致したデー...
-
一つ前に戻るには…
-
降順で並び替えて昇順で受け取...
-
sqlplusで表示が変なので、出力...
-
外部キーだけのテーブル(主キ...
-
SQL、2つのテーブルで条件一致...
-
会社の飲み会の幹事になり、座...
-
「テーブルに座って……」という...
-
テーブルリンク リンク元を知...
-
他のデータベースとのテーブル結合
-
カラム位置変更
-
時給の変更に対応する方法
-
accessでレコード更新直後の反...
-
[DB設計]多対多の問題点とは
-
SQLでSUMなどの関数でデータが...
-
Accessのテーブルデータを一気...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT 文の NULL列は?
-
SQLにて指定日付より前、かつ最...
-
テーブルに存在しない列をselec...
-
SQLでUPSERTを一度に複数行やる...
-
PostgreSQLの断片化の状況を確...
-
javaでデータベース上のテーブ...
-
単純なselectが遅くなるのです...
-
2つのテーブルで引き算 postgres
-
PostgreSQL レコードからアイテ...
-
テーブルを作ろうとしたら。
-
デットロック回避策(autocommit...
-
Postgresのデータ領域の拡張に...
-
MS Access から PostgreSQL へ...
-
Postgresqlのレポート機能について
-
reindex と update のデッドロック
-
最新レコードを抽出し外部結合...
-
異なるデータベースでのINSERT...
-
投稿記事と関連付けているテー...
-
テーブルにcsvファイルをインポ...
-
SQLのクエリの書き方を教えて下...
おすすめ情報