从字符串

时间:2015-06-23 20:42:19

标签: sql-server

我有一个要求,我们有一个名为地址的字段。在此字段中,我们可以允许使用字母,数字和一些特殊字符。以下是这些特殊字符的列表。

我可以想到一种方法是创建一个存储每个允许字符的ASCII的表,然后比较字符串的每个字符并只获取允许的字符。

有人能建议更好的方法吗?任何帮助将非常感激。以下是允许的字符列表:

a-z,0-9,A-Z,':; @<>。& =()%/〜-_!#$®(空格)

1 个答案:

答案 0 :(得分:-1)

您可以在SQL中使用LIKE与否定匹配[^...],即使它在前端的工作也更好。这是一个例子:

DECLARE @Test TABLE (
    String      nvarchar(100)
)

INSERT INTO @Test
    VALUES  (N'123 Fake St'), (N'??? unknown street')


SELECT  String,
        CASE
            WHEN String LIKE '%[^a-zA-Z0-9'':;@<>.&=()%/~-_!#$® ]%' THEN 'Has Invalid Character'
            ELSE 'Valid'
        END
FROM    @Test

P.S。:您确定具有版权特征的地址有效吗?