3

所以我在记录中有一堆包含“/”字符的字符串,例如:

RECORD_NAME
Foo bar
Foo/bar
Fo/o/bar

以及数百万条记录。

我想说,用 2 '/' 字符计算记录数。

所以要找一个,我会说:

select count(*) from my_table where record_name like '%[/]%'

这大概会得到所有带有一个“/”的人。

我该如何计算带有两个正斜杠的那些?您可以在 SQL 查询中包含正则表达式吗?

4

2 回答 2

4

这应该工作:

select count(*) from my_table where record_name like '%/%/%' and record_name not like '%/%/%/%'

这样,您将始终包含带有两个的行//,但如果有三个或更多,not like则将避免它们

于 2012-08-24T17:50:35.207 回答
1

很难准确确定您要查找的内容,但如果您要区分具有 1、2 或 n 个/字符的行:

DECLARE @x TABLE(y VARCHAR(32));

INSERT @x SELECT 'Foo bar0'
UNION ALL SELECT 'Foo/bar1'
UNION ALL SELECT 'Fo/o/bar2'
UNION ALL SELECT 'Fo/obar1'
UNION ALL SELECT 'Fo/o//bar3';

;WITH x(length) AS
(
  SELECT LEN(y) - LEN(REPLACE(y, '/', ''))
  FROM @x WHERE y LIKE '%[/]%'
)
SELECT length, [count] = COUNT(*) 
  FROM x GROUP BY length;

结果:

length  count
------  -----
1       2
2       1
3       1
于 2012-08-24T18:02:44.937 回答