1

我在数据库中有这样的记录,如下所示。我想在 Account Column 中搜索,这是我在 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

4 回答 4

4

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

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

例如

WHERE CHARINDEX('-', Col1) > 0

编辑:

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

所以也许:

WHERE PATINDEX('%-', Col1) <= 3
于 2012-04-25T06:58:30.803 回答
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
于 2012-04-25T07:13:22.880 回答
1

这个使用正则表达式怎么样。

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 '___-%';
于 2012-04-25T07:23:45.713 回答
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]-%'
于 2015-08-03T08:01:56.963 回答