在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要注意什么
LIKE 是另一個在 WHERE 子句中會用到的指令。
基本上,LIKE 能讓我們依據一個套式 (pattern) 來找出我們要的資料。相對來說,在運用 IN 的時候,我們完全地知道我們需要的條件;在運用 BETWEEN 的時候,我們則是列出一個范圍。
LIKE 的語法如下: SELECT "欄位名" FROM "表格名" WHERE "欄位名" LIKE {套式} {套式} 經常包括野卡 (wildcard)。 以下是幾個例子: 'A_Z': 所有以 'A' 起頭,另一個任何值的字原,且以 'Z' 為結尾的字串。
'ABZ' 和 'A2Z' 都符合這一個模式,而 'AKKZ' 并不符合 (因為在 A 和 Z 之間有兩個字原,而不是一個字原)。 'ABC%': 所有以 'ABC' 起頭的字串。
舉例來說,'ABCD' 和 'ABCABC' 都符合這個套式。 '%XYZ': 所有以 'XYZ' 結尾的字串。
舉例來說,'WXYZ' 和 'ZZXYZ' 都符合這個套式。 '%AN%': 所有含有 'AN' 這個套式的字串。
舉例來說, 'LOS ANGELES' 和 'SAN FRANCISCO' 都符合這個套式。 我們將以上最后一個例子用在我們的 Store_Information 表格上: Store_Information 表格 store_namesalesdate Los Angeles$1500jan-05-1999 San Diego$250jan-07-1999 San Francisco$300jan-08-1999 Boston$700jan-08-1999 我們就打入 SELECT * FROM Store_Information WHERE store_name LIKE '%AN%' 結果: store_namesalesdate Los Angeles$1500jan-05-1999 San Francisco$300jan-08-1999 San Diego$250jan-07-1999。
SQL中代替Like語句的寫法是什么樣的
比如查找用戶名包含有"c"的所有用戶, 可以用 use mydatabase select * from table1 where username like'%c%" 下面是完成上面功能的另一種寫法: use mydatabase select * from table1 where charindex('c',username)gt;0 這種方法理論上比上一種方法多了一個判斷語句,即gt;0, 但這個判斷過程是最快的, 我想信80%以上的運算都是花在查找字符串及其它的運算上, 所以運用charindex函數也沒什么大不了。
用這種方法也有好處, 那就是對%,|等在不能直接用like查找到的字符中可以直接在這charindex中運用, 如下: use mydatabase select * from table1 where charindex('%',username)gt;0 也可以寫成: use mydatabase select * from table1 where charindex(char(37),username)gt;0 ASCII的字符即為%。