在實做過程中 有發生,用in 的方式,查 1的時候,把 1 , 13 , 131 三個值都查出來,後來,有用二個查詢式可以處理,但是,覺得,這樣子的查詢式有點麻煩。
所以,我就改用 (1),(6),(3),的方式存查,在查的時候,就用 (1)去查,自然就不會重覆了。
但是,在寫程式的時候,習慣字串列陣拆出來,一個數值一個數值回頭去查相對應的資料,這樣子,對資料庫的負載比較重,就想,是否可以只有一條查詢式達到我要的功能呢 ? 找了一陣子的資料,終於找到了。
select supplier_db_id,supplier_name from supplier_db where charindex('('+ convert(varchar(10),supplier_db_id) +')','(1),(6),(3),') > 0
弄出來了,開心了一陣子,後來發現,這個出現的順序,是照資料庫順序,這樣子,在出來資料,還要自行做資料處理重新排順序。再來做一個加強版的
select supplier_db_id,supplier_name from supplier_db where charindex('('+ convert(varchar(10),supplier_db_id) +')','(1),(6),(3),') > 0 ORDER BY CHARINDEX(RTRIM(supplier_db_id), '(1),(6),(3),')
這樣子就行了。
沒有留言:
張貼留言