2012-04-25 49 views
1

我在數據庫中有這樣的記錄,如下所示。我想在我的AccountDetails表中的最後一列的帳戶列中進行搜索。我想搜索基於條件像在Sql Server中查找連字符的查詢

1要findt其中包含連後第1個數字(可以是任何東西)
12想軟管記錄找到那些包含後第2個數字連字符記錄(其中可以是任何東西)
123-希望找那些帶連字符後第3號(可以是任何東西的記錄)

AccountDetail表

230263 jba 100-1807 
230263 jba 100-1808 
230263 jba 100-1809 
235572 jba 99-1818 
235572 jba 99-1819 
235572 jba 99-1820 
235572 jba 9-1818 
235572 jba 9-1819 
235572 jba 9-1820 

我有別e像這樣

Select * From WF_Account Where CompanyId = 'jba' and Account Like '%-%' 
+0

只是單獨的第3列,並計算第一個數字的數字:) – hgulyan 2012-04-25 06:59:31

回答

4

不確定您運行的是哪個版本的sql。

但在SQL Server中,你可以使用CHARINDEX或SQL 2012 FINDSTRING

e.g

WHERE CHARINDEX('-', Col1) > 0 

編輯:

您還可以使用PATINDEX返回字符串的一個模式的位置。

所以也許:

WHERE PATINDEX('%-', Col1) <= 3 
2

你可以試試這個查詢:

1-希望找到那些包含連後第1個數字(可以是任何東西)記錄

SELECT * 
FROM WF_Account 
WHERE CompanyId = 'jba' 
AND CHARINDEX('-', Account) = 2 

12-想找到第二個數字後面包含連字符的記錄(可以是任何東西)

SELECT * 
FROM WF_Account 
WHERE CompanyId = 'jba' 
AND CHARINDEX('-', Account) = 3 

123-希望找那些包含後第3號的連字符(可以是任何東西)記錄

SELECT * 
FROM WF_Account 
WHERE CompanyId = 'jba' 
AND CHARINDEX('-', Account) = 4 
1

這個怎麼樣使用Regular expression

1要findt

Select * From WF_Account Where CompanyId = 'jba' and Account Like '_-%'; 

12想包含一個連字符後第1個數字(可以是任何東西)軟管記錄找到那些包含連後第2個數字(可以是任何記錄)

Select * From WF_Account Where CompanyId = 'jba' and Account Like '__-%'; 

123-希望找那些帶連字符後第3號(可以是任何東西的記錄)

Select * From WF_Account Where CompanyId = 'jba' and Account Like '___-%'; 
0

使用LIKE的[]字符集選項。如果您需要將連字符放入字符集,請參閱ESCAPE子句。

select * from WF_Account 
-- Hypen after one digit 
where Account like '[0-9]-%' 
-- Hypen after two digits 
or Account like '[0-9][0-9]-%' 
-- Hypen after three digits 
or Account like '[0-9][0-9][0-9]-%'