[英]Can I use a between statement for a range of characters in SQL?
我當前的代碼工作並突出顯示帶有非法(&隱藏)字符的電子郵件地址,這些字符會進入下游系統並破壞它們。 問題是可以使語句更有效,並說搜索 CHAR(1) 和 CHAR(31) 之間的任何字符而不是列出每一行?
SELECT * FROM [Table1].[customer]
where
EMAIL_ADDR like '%'+CHAR(1) +'%' or
EMAIL_ADDR like '%'+CHAR(2) +'%' or
EMAIL_ADDR like '%'+CHAR(3) +'%' or
EMAIL_ADDR like '%'+CHAR(4) +'%' or
EMAIL_ADDR like '%'+CHAR(5) +'%' or
EMAIL_ADDR like '%'+CHAR(6) +'%' or
EMAIL_ADDR like '%'+CHAR(7) +'%' or
EMAIL_ADDR like '%'+CHAR(8) +'%' or
EMAIL_ADDR like '%'+CHAR(9) +'%' or
EMAIL_ADDR like '%'+CHAR(10)+'%' or
EMAIL_ADDR like '%'+CHAR(11)+'%' or
EMAIL_ADDR like '%'+CHAR(12)+'%' or
EMAIL_ADDR like '%'+CHAR(13)+'%' or
EMAIL_ADDR like '%'+CHAR(14)+'%' or
EMAIL_ADDR like '%'+CHAR(15)+'%' or
EMAIL_ADDR like '%'+CHAR(16)+'%' or
EMAIL_ADDR like '%'+CHAR(17)+'%' or
EMAIL_ADDR like '%'+CHAR(18)+'%' or
EMAIL_ADDR like '%'+CHAR(19)+'%' or
EMAIL_ADDR like '%'+CHAR(20)+'%' or
EMAIL_ADDR like '%'+CHAR(21)+'%' or
EMAIL_ADDR like '%'+CHAR(22)+'%' or
EMAIL_ADDR like '%'+CHAR(23)+'%' or
EMAIL_ADDR like '%'+CHAR(24)+'%' or
EMAIL_ADDR like '%'+CHAR(25)+'%' or
EMAIL_ADDR like '%'+CHAR(26)+'%' or
EMAIL_ADDR like '%'+CHAR(27)+'%' or
EMAIL_ADDR like '%'+CHAR(28)+'%' or
EMAIL_ADDR like '%'+CHAR(29)+'%' or
EMAIL_ADDR like '%'+CHAR(30)+'%' or
EMAIL_ADDR like '%'+CHAR(31)+'%'
在 SQL Server 中,您應該能夠使用字符類:
where EMAIL_ADDR like '%[' + CHAR(1) + CHAR(2) + CHAR(3) + . . . ']%'
但是,檢查允許的字符可能更簡單:
where email_addr like '%[-a-zA-Z0-9_.@]%'
或您允許的任何字符列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.