iT邦幫忙

0

T-SQL請教

各位先進日安:
有兩個TABLE:A跟B
A的資料有兩筆,只有一個欄位a1:
12345678
45678901

B的資料有三筆,只有一個欄位b1:
456
78
123

我主要是要select * from A,請問我如何下SQL能得知A在B當中有相對應部分的資料呢?也就是說,只要A當中有部分字串是存在於B就SELECT出來(CHARINDEX)

謝謝各位

haoming iT邦好手 1 級 ‧ 2016-07-25 16:45:31 檢舉
是不是排版把你的範例資料 混在一起了,我怎麼看不動你的資料內容。
哈 真的是耶,害我誤會 B 的資料只有 1筆

2 個回答

1
huangsb
iT邦好手 1 級 ‧ 2016-07-26 08:35:49
最佳解答

你可以這麼下:

SELECT a1, b1
FROM a, b
WHERE CHARINDEX(b1, a1) > 0

格主跟我一 樣忘記 b1 只有一筆紀錄啊
建議修正如下

SELECT a1, b1
FROM a, b
WHERE CHARINDEX((select top 1 b1 from b), a1) > 0

在修正一次 因為 b1 只有一筆紀錄,所以 ...

SELECT a1
FROM a, b
WHERE CHARINDEX((select top 1 b1 from b), a1) > 0

如果硬要列出 b1 的話,年紀大了,那個語法忘光光了

0
窮嘶發發發
iT邦高手 1 級 ‧ 2016-07-25 17:16:50

記得沒錯的話可以這麼下
select a1 from a,b where a1 like b1

看更多先前的回應...收起先前的回應...
lungzen iT邦新手 4 級 ‧ 2016-07-25 17:33:00 檢舉

您好,這樣不行^_^

修正如下
select a1 from a,b where a1 like (select top 1 b1 from b)

你是要找出有 a1 跟 b1 有部分字串相同的就列出
那麼不該用 CHARINDEX ,這個函數是列出 哪裡找到的
例如 b1 = 3
a1 如下
123
321
535
那結果就會是
3
1
2
如果你要用 CHARINDEX 那出來的結果就會是這樣
看哪個是你要的

忘了斷行,重打一次

你是要找出有 a1 跟 b1 有部分字串相同的就列出
那麼不該用 CHARINDEX ,這個函數是列出 哪裡找到的
例如 b1 = 3
a1 如下
123
321
535
那結果就會是
3
1
2
如果你要用 CHARINDEX 那出來的結果就會是這樣
看哪個是你要的

lungzen iT邦新手 4 級 ‧ 2016-07-26 10:15:06 檢舉

已找到方法,謝謝您

liupaul iT邦新手 4 級 ‧ 2016-07-27 16:56:09 檢舉

請問最後是用什麼方法

我要發表回答

立即登入回答