一、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)||'%';
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