我在数据库中有这样的记录,如下所示。我想在帐户列中搜索,这是我在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 '%-%'
答案 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]-%'