この答えは想定して行う方法を提案してください。これはまた、WHERE .. IN
でそのようなロジックを使用するためのデータ正常性チェックが既に行われていることを前提としています。
は、あなたのデータ値があると仮定します
2565,5216,5364
'2565','5216','5364'
あなたのアプリケーションがこれらの隠れ家次へ:
'2565,5216,5364'
''2565','5216','5364''
この回答のためのクエリのデザインを容易にするために、私たちがして、SQLの文字列値にこれらを変換することができます追加の一重引用符で値の各一重引用符をエスケープし、それを文字列にするために一重引用符のペアの中に置く。これは私たちに与えます:
'''2565,5216,5364'''
'''''2565'',''5216'',''5364'''''
をあなたはこれらのすべての単一引用符を削除したい場合は、空の文字列を持つすべての単一引用符を置き換える意味し、私たちに与え
SELECT OREPLACE('''2565,5216,5364''', '''', '');
SELECT OREPLACE('''''2565'',''5216'',''5364''''', '''', '');
を使用することができます。
2565,5216,5364
2565,5216,5364
これは、整数値と比較する場合に使用する方法です。
データを保存し、.NETアプリケーションで囲まれた引用符のみを削除する場合(たとえば、比較が文字データでもある場合)、これをさらにロジックと組み合わせることができます。それは、クエリは、上記のアプリケーションから囲む引用符を削除しているあなたに次のような結果が得られます
SELECT TRIM(BOTH '''' FROM '''''2565'',''5216'',''5364''''');
、このような動作のためのより多くの価値を提示するだけでなく、が入力した最初と最後の引用符を削除しますので、私たちは、第二のデータ値を使用してみましょうユーザー
2565','5216','5364
良いオプションが、常にあなたのアプリケーションは引用符内のデータが
SELECT SUBSTR('''''2565'',''5216'',''5364''''',2,CHARACTER_LENGTH('''''2565'',''5216'',''5364''''')-2);
だろう囲むことを前提と(どちら* SELECTトリム:0
これは、長さ2までの文字列の2番目の文字から部分文字列操作を行いますので、あなたは、文字列内の単一引用符を二重にする必要があり
'2565','5216','5364'
アプリケーションによって挿入された両方の引用符を無視しますFROM( '' '' 2565 ''、 '' 5216 ''、 '' '' 5364 '' ')) ')しかし、これはあなたが実際に必要/望んでいるものではありません。パラメータはどのように正確に見えますか? – dnoeth
私は '' 2565 '、' 5216 '、' 5364 ''または '2565,5216,5364'のいずれかの@Groupパラメータを持っています。WHERE IN節では、(2565,5216,5364)または( '2565'、 '5216'、 '5364')の両方が機能します。問題は引用符を取り除くことです。すべての引用符またはその引用符を取り除くことです。 – SilverFish
問題を解決するのに役立つその他の機能をお勧めします – SilverFish