请参阅如何从字符串中删除非数字/非字母数字字符
CREATE FUNCTION [fnRemoveNonNumericCharacters](@strText VARCHAR(1000))
RETURNS VARCHAR(1000)
AS
BEGIN
WHILE PATINDEX('%[^a-z0-9]%', @strText) > 0
BEGIN
SET @strText = STUFF(@strText, PATINDEX('%[^a-z0-9]%', @strText), 1, '')
END
RETURN @strText
END
使用创建的函数选择数据
SELECT
dbo.fnRemoveNonNumericCharacters(BLOCK_NAME)
FROM
YourTable
或者
;WITH T as(
SELECT STUFF(BLOCK_NAME, PATINDEX('%[^a-z0-9]%', BLOCK_NAME), 1, '') BLOCK_NAME from YourTable
UNION ALL
SELECT STUFF(BLOCK_NAME, PATINDEX('%[^a-z0-9]%', BLOCK_NAME), 1, '') BLOCK_NAME from T where PATINDEX('%[^a-z0-9]%', BLOCK_NAME) > 0
)
select
*
from
T
where PATINDEX('%[^a-z0-9]%', BLOCK_NAME) = 0
我更喜欢使用没有用户定义函数的 CTE 的第二种方法。