簡體   English   中英

我可以對 SQL 中的一系列字符使用 between 語句嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM