iT邦幫忙

0

MS SQL 問題

不好意思 小弟 MS-SQL 新手
想請問各位前輩
今天遇到一個狀況,苦惱了好久
執行了一個Store Procedure

SELECT TOP(1) A.sno FROM PitLog AS A 
INNER JOIN Pi AS B ON A.sno = B.sno
WHERE REPLACE(',' + B.license + ',', '-', '') LIKE '%,%' + @license + '%,%' 

資料庫資料:',1111-YD,ATJ-5555,AUJ-6666'(資料前面都有逗號)

第一次帶入值 1111YD 跑完程式 帶出結果符合
第二次帶入值 1111Y 跑完程式 帶出結果符合
導致程式出現重複資料

請問該怎麼樣才能像資料庫資料(1111YD、ATJ5555、AUJ6666) 帶入值必須相同才能帶出結果相同

若帶入1111Y或ATJ55或AUJ66等資料 帶出結果不符合呢?

再麻煩各位前輩幫忙解惑,謝謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
fuzzylee1688
iT邦研究生 3 級 ‧ 2019-10-31 08:59:07
最佳解答

參考看看.

SELECT TOP(1) A.sno 
FROM PitLog AS A 
INNER JOIN (
  select sno, REPLACE(',' + license + ',', '-', '') xlicense
    from Pi 
	) AS B 
  ON A.sno = B.sno
WHERE charindex(@license+',', B.xlicense) > 0

a51312 iT邦新手 5 級 ‧ 2019-10-31 17:39:38 檢舉

謝謝各位前輩的幫忙,我解開了

0
小魚
iT邦大師 1 級 ‧ 2019-10-31 07:58:28

應該是因為你用了LIKE,
LIKE是模糊搜尋.

a51312 iT邦新手 5 級 ‧ 2019-10-31 17:39:53 檢舉

謝謝

0
GJ
iT邦好手 1 級 ‧ 2019-10-31 08:59:26

參考

SQL

a51312 iT邦新手 5 級 ‧ 2019-10-31 17:40:01 檢舉

謝謝

我要發表回答

立即登入回答