請教sql語句中not like的用法
標準SQL中用like進行模糊查詢,有兩個通配符:%百分號代表任意個字符,_下劃線代表一個字符。
例如查詢姓名中包含“曉”的人,where子句可以寫成:where name like '%曉%'
姓名由兩個字構成,并且第二個字是“紅”,可以寫成:where name like '_紅'
如果對like進行否定,前面加上not即可
查詢姓名中不包含“曉”的人:where name not like '%曉%'
姓名由兩個字構成,第二個字不是“紅”:where name not like '_紅'
在sql語句中,like所有的用法
Like的運用場合主要在模糊查詢的時候,一般以查詢字符串居多,這里據一些例子來說他的一般用法:
例1,查詢name字段中包含有“明”字的。
select * from table1 where name like '%明%'
這里不要使用*來代替,一般在使用0個或者任意個字符構成的字符串的時候最好使用%
不過在首或尾使用可以相互替換,如果在頭尾同時使用的話,就必須要使用%
例2,查詢name字段中以“李”字開頭。
select * from table1 where name like '李*'
或者
select * from table1 where name like '李%'
例3,查詢name字段中含有數字的。
select * from table1 where name like '%[0-9]%'
例4,查詢name字段中含有小寫字母的。
select * from table1 where name like '%[a-z]%'
例5,查詢name字段中不含有數字的。
select * from table1 where name like '%[!0-9]%'
補充一點,?或者_表示單個字符
sql 中 like 語句的用法
測試表.
CREATE TABLE test_like (
like_value VARCHAR(20)
);
INSERT INTO test_like
SELECT '1234567890' UNION ALL
SELECT '12345' UNION ALL
SELECT 'abca' UNION ALL
SELECT 'adcb' UNION ALL
SELECT 'abcc' UNION ALL
SELECT 'abcd' UNION ALL
SELECT 'abcde' UNION ALL
SELECT 'xyz 10% OFF' UNION ALL
SELECT 'xyz 20% OFF' UNION ALL
SELECT 'xyz_123_abc'
_ 表示僅僅匹配1個字符
SELECT
*
FROM
test_like
WHERE
like_value LIKE '1234_';
like_value
--------------------
12345
(1 行受影響)
% 表示僅僅匹配0個或多個字符
SELECT
*
FROM
test_like
WHERE
like_value LIKE '12345%';
like_value
--------------------
1234567890
12345
(2 行受影響)
使用模式匹配
SELECT
*
FROM
test_like
WHERE
like_value LIKE 'abc[ad]';
like_value
--------------------
abca
abcd
(2 行受影響)
SELECT
*
FROM
test_like
WHERE
like_value LIKE '[1a]%[5e]';
like_value
--------------------
12345
abcde
(2 行受影響)
使用 ESCAPE 定義轉義符
SELECT
*
FROM
test_like
WHERE
like_value LIKE '%!%%' ESCAPE '!';
like_value
--------------------
xyz 10% OFF
xyz 20% OFF
(2 行受影響)
SELECT
*
FROM
test_like
WHERE
like_value LIKE '%!_%' ESCAPE '!';
like_value
--------------------
xyz_123_abc
(1 行受影響)
這個SQL語句該怎么寫(LIKE)
哎,郁悶,原來abap的where語句本身就支持動態條件。
SELECTION-SCREEN BEGIN OF BLOCK SS WITH FRAME TITLE TEXT-100. PARAMETERS: V_WERKS TYPE MARC-WERKS OBLIGATORY VALUE CHECK, V_MATNR TYPE MARC-MATNR, V_DISPO TYPE MARC-DISPO, V_XCHAR TYPE MARC-XCHAR. SELECTION-SCREEN END OF BLOCK SS. DATA : STR TYPE STRING. DATA : L_MARC TYPE MARC. START-OF-SELECTION. STR = SPACE. CONCATENATE STR 'WERKS = ''' V_WERKS '''' INTO STR. IF V_MATNR SPACE. CONCATENATE STR ' AND MATNR = ''' V_MATNR '''' INTO STR. ENDIF. IF V_DISPO SPACE. CONCATENATE STR ' AND DISPO = ''' V_DISPO '''' INTO STR. ENDIF. IF V_XCHAR = 'X'. CONCATENATE STR ' AND XCHAR = '' X ''' INTO STR. ENDIF. SELECT * INTO L_MARC FROM MARC WHERE (STR). WRITE : / L_MARC-WERKS,L_MARC-MATNR,L_MARC-DISPO. ENDSELECT.。
轉載請注明出處華閱文章網 » sql語句notlike