【发布时间】:2023-03-15 15:02:01
【问题描述】:
对于所有 ASCII 字符 1-255,我需要计算列 (varchar(x)) 包含特定字符的记录数。这就是我到目前为止所拥有的(在一个过程中)......
DECLARE @CHAR TINYINT = 1
CREATE TABLE #CHARCOUNTS (CHAR TINYINT, COUNT INT)
WHILE @CHAR < 255
BEGIN
INSERT INTO #CHARCOUNTS(CHAR, COUNT) VALUES (@CHAR,(SELECT COUNT (ID) FROM MyTable WHERE CHARINDEX(CHAR(@CHAR), MyColumn) > 0))
SET @CHAR = @CHAR + 1
END
SELECT CHAR, COUNT FROM #CHARCOUNTS
这返回一个结果集,告诉我有 X 记录包含 CHAR(1),X 记录包含 CHAR(2) 等等,但是查询需要几分钟才能完成大约 500 万条记录,因为我猜它必须遍历每条记录 255 次。对更有效/更快的方法有什么建议吗?
非常感谢。
【问题讨论】:
标签: sql sql-server count char character