SQL查询中的两个转义字符

3

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

RECORD_NAME
Foo bar
Foo/bar
Fo/o/bar

还有数百万条记录。

我的意思是,计算具有2个'/'字符的记录数量。

因此,要查找一个,我会这样做:

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

这将很可能获取所有包含一个“/”的内容。

如果我想统计包含两个正斜杠的内容,该怎么做?在SQL查询中可以使用正则表达式吗?

2个回答

4

这应该可以工作:

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

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


1
好的,会避免所有包含三个或更多斜杠的内容 :) - Gonzalo.-

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接