查询在Sql Server中查找连字符

时间:2012-04-25 06:52:10

标签: sql-server

我在数据库中有这样的记录,如下所示。我想在帐户列中搜索,这是我在AccountDetails表中的最后一列。我想根据

等条件进行搜索

1-想找到第一个数字后面包含连字符的软管记录(可以是任何东西)
12-想要找到第二个数字后面包含连字符的记录(可以是任何内容)
123-想要找到第三个数字后面包含连字符的记录(可以是任何东西)

帐户详情表

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

我这样做了

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

4 个答案:

答案 0 :(得分:4)

不确定您正在运行的是哪个版本的SQL。

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

例如

WHERE CHARINDEX('-', Col1) > 0

编辑:

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

所以也许:

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

答案 1 :(得分:2)

您可以尝试此查询:

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 - 想要找到第三个数字后面包含连字符的记录(可以是任何内容)

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

答案 2 :(得分:1)

如何使用Regular expression

1-想要找到第一个数字后面包含连字符的软管记录(可以是任何东西)

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

12-想找到那些在第二个数字后面包含连字符的记录(可以是任何东西)

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

123-想要找到第三个数字后面包含连字符的记录(可以是任何内容)

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

答案 3 :(得分: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]-%'