用于返回字母数字的查询

时间:2010-06-21 11:27:27

标签: tsql

是否有任何只返回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只能去掉'$%^& *(〜>

3 个答案:

答案 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)

答案 2 :(得分:1)

我认为T-SQL只能以一种简洁的方式实现这一点。 但是您可以通过.NET程序集轻松地将这样的功能暴露给SQL-Server。 网上有几个关于这个主题的例子。