sql通配符+sql中查詢條件包含下划線等通配符的寫法


一、SQL 通配符

在搜索數據庫中的數據時,SQL 通配符可以替代一個或多個字符。

SQL 通配符必須與 LIKE 運算符一起使用。

在 SQL 中,可使用以下通配符:

通配符 描述
% 替代一個或多個字符
_ 僅替代一個字符
[charlist] 字符列中的任何單一字符

[^charlist]

或者

[!charlist]

不在字符列中的任何單一字符

 

例:

Persons 表:

Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

我們從上面的 "Persons" 表中選取居住的城市不以 "A" 或 "L" 或 "N" 開頭的人:

SELECT * FROM Persons WHERE City LIKE '[!ALN]%'

二、查詢條件中包含通配符字符,而字符不要充當通配符的寫法

輸入一個in_String
SQL 是
  SELECT field1 FROM tablename1 WHERE field2 like '%in_String%'

現在輸入一個'abcd_',因為在SQL中下划線也當作了單個的通配符,所以返回的結果是:
'abcd1'
'abcd2aksd'
'abcd3_dkjk'
'kad_abcdkdk'

可是想要的結果是
'abcd_1'
'abcd_2aksd'
'abcd_3_dkjk'
'kad_abcd_kdk'
就是說,希望得到的結果是,下划線不作為通配符的結果。
請問這個SQL 該怎么寫啊?
 
解決辦法:
SELECT field1 FROM tablename1 WHERE field2 like 'abcd\_%' escape '\';
 
但是'&'不能通過轉義字符查找:
SQL> select * from test where test like '%/&%' escape'/';
                                   *
第 1 行出現錯誤:
ORA-01424: 轉義符之后字符缺失或非法
        可以通過另外的方式進行轉義:
SQL> select ascii('&') from dual;
ASCII('&')
----------
        38
SQL> select * from test where test like '%'||chr(38)||'%';
 
也可以使用[]來解決

 鏈接:http://www.w3school.com.cn/sql/sql_wildcards.asp

        http://blog.163.com/yanenshun@126/blog/static/128388169201411444753631/

    http://blog.csdn.net/strawberry0924/article/details/5301579

   http://www.cnblogs.com/cuihongyu3503319/archive/2012/03/14/2396414.html

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM