SQL查询中的两个转义字符

时间:2012-08-24 17:45:54

标签: sql-server syntax count escaping special-characters

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

RECORD_NAME
Foo bar
Foo/bar
Fo/o/bar

数百万条记录。

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

所以要找一个,我会这么做,说:

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

这可能会让那些带有'/'的所有人在那里。

如何用两个正斜杠来计算?你能在SQL查询中包含正则表达式吗?

2 个答案:

答案 0 :(得分:4)

这应该有效:

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

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

答案 1 :(得分: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