iT邦幫忙

0

SQL 比較查詢問題

sql
  • 分享至 

  • xImage

各位大大好:

我有建一資料庫,有sgift_no和egift_no兩個欄位,裡面分別是SL107100001和SL107160000,我想要查詢SL107XXXXXX(XXXXXX為數字)有在sgift_no和egift_no之間,
我用以下SQL查詢,會有結果出來,該如何修改,才會是SL107100001~SL107160000之間,謝謝。
Declare
@giftno varchar(20)

--Initialize var
set @giftno = 'SL10716;;;'

SELECT sgift_no,egift_no

FROM [ABT_WEB].[dbo].[gift_data]

where (@giftno >=sgift_no) and (@giftno <=egift_no)

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
純真的人
iT邦大師 1 級 ‧ 2018-10-05 12:08:31

試試..

set @giftno = 'SL107100015'

SELECT sgift_no,egift_no

FROM [ABT_WEB].[dbo].[gift_data]

where @giftno between sgift_no and egift_no
gaga0826 iT邦新手 5 級 ‧ 2018-10-05 13:59:47 檢舉

您好,這段我也試過,但是用@giftno = 'SL10712',也是會有查詢結果。謝謝

我不知道~你認為怎樣不該出現??
SL10712 不是在 SL10710~SL10716 之間嗎??
SL10710 SL10711 SL10712 SL10713 SL10714 SL10715 SL10716?

0
小魚
iT邦大師 1 級 ‧ 2018-10-05 18:59:17

擷取字串再轉數字比較?
資料量大的話應該要處理很久...

0
starcity1003
iT邦新手 4 級 ‧ 2018-10-08 21:44:05

Try:

Declare
@giftno varchar(20)

--Initialize var
set @giftno = 'SL10716;;;'

SELECT sgift_no,egift_no
FROM [ABT_WEB].[dbo].[gift_data]
where ( len(@giftno) = 11 ) and 
( substring(@giftno, 1, 5) = 'SL107' ) and 
( substring(@giftno, 6, 6) >= substring(sgift_no, 6, 6) ) and 
( substring(@giftno, 6, 6) <= substring(egift_no, 6, 6) )
看更多先前的回應...收起先前的回應...
gaga0826 iT邦新手 5 級 ‧ 2018-10-09 17:29:17 檢舉

看來是要透過程式來判斷輸入的值是否為11位,謝謝

我的方法不行嗎?

丫!少了個條件...

我改正了,你試試看

如果還要判斷位數...我再改正了,你試試看

0
犬千賀
iT邦新手 3 級 ‧ 2018-10-16 14:14:33

大概是這種感覺...

SELECT sgift_no, egift_no

FROM( SELECT sgift_no, egift_no,
              REPLACE('SL','', sgift_no) AS S,
              REPLACE('SL','', egift_no) AS E
		FROM [ABT_WEB].[dbo].[gift_data]
	)gift_data

WHERE REPLACE('SL','', @giftno) BETWEEN S AND E

我要發表回答

立即登入回答