スペースを文字列から OR ステートメントに変換しようとしています。
Declare @postcodes varchar(128)
SET @postcodes = '2130 2602' --this input will be postcodes separated by a space (I'm in Australia so the postcodes are only 4 numbers long)
SET @postcodes = REPLACE(@postcodes, ' ', ' OR postcode = ') --I know this isn't right but it shows what I am trying to achieve
SELECT *
FROM users
WHERE postcode = @postcodes
上記のクエリが実際にユーザーを探していることはわかっています。
postcode = '2130 OR postcode = 2602'
私は本当にユーザーを見つけたいです
postcode = '2130' OR postcode = '2602'
私がグーグルで何をすべきかについてのアイデアや方向性はありますか?
アップデート
Albin SunnanboとFalconによって提案された方法を組み合わせることになりました。Will Hughesによって提案された関数メソッドは、はるかに洗練されていましたが、この特定のインストールでは関数を使用したくないと思います。
これが、いくつかのクリーニング機能を追加した最後のクエリです。
Declare @postcodes varchar(128)
SET @postcodes = '2130 2602 2000'
--Postcode cleaning
SET @postcodes = REPLACE(@postcodes,';',' ') --removes ";"
SET @postcodes = REPLACE(@postcodes,',',' ') --removes ","
SET @postcodes = (LTRIM(RTRIM(@postcodes))) --trim white space
SET @postcodes = REPLACE(@postcodes,' ',' ') --removes double spaces
SET @postcodes = REPLACE(@postcodes,' ',' ') --removes double spaces again
SET @postcodes = '''' + REPLACE(@postcodes,' ',''',''') + '''' --adds ' to @postcodes
DECLARE @SQLString nvarchar(MAX);
SET @SQLString = N'
SELECT *
FROM users
WHERE postcode IN(' + @postcodes + ')';
EXECUTE sp_executesql @SQLString;
SELECT @SQLString AS SQLString --This part serves no purpose, it just shows you what the query looks like