在您对存储过程的回答中,您有两个错误,一个是列名和 LIKE 子句之间缺少空格,第二个是搜索参数周围缺少单引号。
我首先创建用户定义的标量函数,如果字符串包含重复的字母,则返回 1:
已编辑
CREATE FUNCTION FindDuplicateLetters
(
@String NVARCHAR(50)
)
RETURNS BIT
AS
BEGIN
DECLARE @Result BIT = 0
DECLARE @Counter INT = 1
WHILE (@Counter <= LEN(@String) - 1)
BEGIN
IF(ASCII((SELECT SUBSTRING(@String, @Counter, 1))) = ASCII((SELECT SUBSTRING(@String, @Counter + 1, 1))))
BEGIN
SET @Result = 1
BREAK
END
SET @Counter = @Counter + 1
END
RETURN @Result
END
GO
创建函数后,只需从简单SELECT
查询中调用它,如下所示:
SELECT
*
FROM
(SELECT
*,
dbo.FindDuplicateLetters(ColumnName) AS Duplicates
FROM TableName) AS a
WHERE a.Duplicates = 1
使用这种组合,您将只得到具有重复字母的行。