次のSQLクエリがあります。SQLパラメータの問題
DECLARE @OID NVARCHAR(MAX) = '(98,99,100,101,102,103,104,105)'
SELECT
Name = (SELECT [Name]
FROM Point
WHERE CAST(OID AS NVARCHAR(10)) = Point),
Timestamp,
ValueNumeric
FROM
[IngeniousRPM_Bridge].[dbo].[Value]
WHERE
CAST(Point AS NVARCHAR(10)) IN (98,99,100,101,102,103,104,105)
AND [Timestamp] BETWEEN '2017-11-01' AND '2017-11-30'
AND ValueNumeric IS NOT NULL
@OID
がハードコーディングされている時には、上記のクエリは正常に動作しますが、私はそれがテーブル内の任意の値を返さない以下のように@OID
値を渡すしようとします。最終的には、ストアドプロシージャを作成して@OID
の値を渡す必要があります。あなたがvarchar型の文字列から括弧を削除した場合
DECLARE @OID NVARCHAR(MAX) = '(98,99,100,101,102,103,104,105)'
SELECT
Name = (SELECT [Name]
FROM Point
WHERE CAST(OID AS NVARCHAR(10)) = Point),
Timestamp,
ValueNumeric
FROM
[IngeniousRPM_Bridge].[dbo].[Value]
WHERE
CAST(Point AS NVARCHAR(10)) IN (@OID)
AND [Timestamp] BETWEEN '2017-11-01' AND '2017-11-30'
AND ValueNumeric IS NOT NULL
これは非標準SQLです。どちらの[DBMS](https://en.wikipedia.org/wiki/DBMS)製品を使用していますか? 「SQL」はクエリ言語であり、特定のデータベース製品の名前ではありません。 –
渡す変数@OIDはvarcharであり、IN句でそのように扱われています。使用しているSQLのバージョンによっては、このスタックオーバーフローの回答が役立ちます。https://stackoverflow.com/questions/29538697/create-t-sql-function-with-table-parameterどのSQLとバージョンを使用しているか知っています。 – SteveB
私はMS SQL Server 2012を使用しています – Learner