是否有任何只返回apha numerice值的查询
样品
从联系人中选择FirstName,Surname,NationalID
结果
姓|姓| NationalID Tony | Smith | 934& #fdsaf $ 34£51 玛丽|琼斯| 655 ^!ffdat @ 389£2
预期结果
姓|姓| NationalID 托尼|史密斯| 934fdsaf34£51 玛丽|琼斯| 655ffdat389£2
换句话说,我希望查询只返回数字和文本:。 A-Z和0-9只能去掉'$%^& *(〜>
答案 0 :(得分:3)
您可以尝试patindex function。例如,只需选择FirstName,就会删除第一次出现的非字母数字:
SELECT replace(FirstName, substring(FirstName, patindex('%[^a-zA-Z0-9]%', FirstName), 1), '') FROM CONTACTS
要展开此选项以删除所有匹配项,请将patindex调用移至函数as mentioned here:
CREATE FUNCTION CleanVarchar(@Temp VARCHAR(1000))
RETURNS VARCHAR(1000)
AS
BEGIN
WHILE PATINDEX('%[^a-zA-Z0-9]%', @Temp) > 0
SET @Temp = STUFF(@Temp, PATINDEX('%[^a-z^0-9]%', @Temp), 1, '')
RETURN @TEmp
END
最后调用函数
Select CleanVarchar(FirstName),CleanVarchar(Surname),CleanVarchar(NationalID) From Contacts
答案 1 :(得分:1)
使用sql server的Replace
函数
Sql Server Tips – Removing or Replacing non-alphanumeric characters in strings
答案 2 :(得分:1)
我认为T-SQL只能以一种简洁的方式实现这一点。 但是您可以通过.NET程序集轻松地将这样的功能暴露给SQL-Server。 网上有几个关于这个主题的例子。