我在與樣本數據表中的列如下:SQL CHAR指數的WHERE子句中搜索字符串
ServiceTypeIds
7,1
1,9
1
9
4
7
7
在我的Where子句我使用以下方法來搜索就可以了:
WHERE (@ServiceTypes IS NULL
OR CHARINDEX(','+CAST(SEP.ServiceTypeIDs as VARCHAR(255))+','
, ','[email protected]+',') > 0)))
如果我的參數@ServieTypes等於'1,9',那麼我會得到結果,但是當它的@ServiceTypes ='1'或'9'時,我不會收到任何迴應。我卡住了,並嘗試上述。
請不要採取這種錯誤的方式,但你的情況就是分隔字符串是令人難以接受的。一列,一個值。當使用第三範式表單設計時,查詢性能會更好。如果可能的話,重新設計桌子是合適的。從長遠來看,它會爲你節省很多。 – 2012-07-30 01:36:33
我明白了,我繼承了這個應用程序,當時根本不需要從頁面上搜索這個標準。即時通訊使用MVC,如果我創建一個新的表,我必須在很多地方修改代碼,所以由於時間限制,我只需要一個修復存儲過程現在.. – 2012-07-30 01:39:47
我會[TVF](http:// msdn.microsoft.com/en-us/library/ms191165%28v=sql.105%29.aspx)將這些值轉換爲一個表(表變量,但足夠接近)。這些列只是主鍵,和一個「serviceTypeID」。您可以加入主鍵,並根據列進行搜索。它也會將值轉換爲實際的表格,因爲代碼只需要很少的修改。 – 2012-07-30 01:54:02