2012-04-25 48 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]-%'