2016-12-08 83 views
0

假設我有一個電話號碼錶。在這個表中,'Number'列(nvarchar)可能包含也可能不包含連字符。我如何構造where子句?如何匹配where子句中可能包含連字符的字符串?

例如,記錄可能是這樣的:

號碼|名稱

111 |彼得

11-22 | Mark

222-33 |約翰

如果我做

SELECT Name FROM table WHERE Number = '22233' 

我不會找到約翰。我不知道連字符可能出現在哪個數字後面。

構建WHERE子句以按數字匹配記錄的最佳方法是什麼?

+1

'SELECT名稱FROM表WHERE更換另一種方法(數字, ' - ', '') ='22233'' – artm

回答

1
SELECT Name FROM table WHERE Replace(Number,'-','') = '22233' 
+0

LOL。當我看到答案並問自己時,這是其中的一次:我怎麼可能不想到這一點。謝謝。 –

+0

@AllenZhang我懷疑你是在想它 –

+0

@AllenZhang-它也發生在我身上很多次) –

-1

除了上面的回答,您可以使用WHERE子句中的like%

SELECT Name FROM table WHERE Number like '%-%' 

這給你所有那些具有hyphon其數量的項目。

+0

這匹配'whatever-whatever' –

+0

我說它匹配所有數字 - 在他們(因爲查詢是在該列)@AllenZhang爲什麼downvote? – Yaser

+0

,因爲您的查詢與我的示例中的第一條記錄不匹配。數字可以或不包含連字符。不過謝謝你提出的問題,我真的認爲這應該會迫使選民留下一個理由。 –

0

使用STUFF,如果它總是單-然後用這個

SELECT Name FROM table 
WHERE Stuff(Number,Charindex('-',Number),1,'') = '22233' 

約翰Replace方法看起來更優雅

相關問題