在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語句的寫法是什么樣的
比如查找用戶名包含有"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的字符即為%。
一個簡單的SQL like語句
如果想統計個數的話是不可以這樣寫的,
(1)統計小表的關鍵詞包含在總表的個數應該是這樣寫:
select count (distinct a.列名) from 總表 as a ,小表 as b
where charindex(a.列名,b.列名) is not null and charindex(a.列名,b.列名)'0'
(2)統計大表中包含小表中的關鍵詞的個數應該這樣寫:
select count (distinct b.列名) from 總表 as a ,小表 as b
where charindex(a.列名,b.列名) is not null and charindex(a.列名,b.列名)'0'
注意防止會有重復的記錄,所以要區分開來
就寫法而言你的那中寫法也沒有錯,不過計算量太大。。。我這種寫法也不是很好,應該比你那個好些吧。
SQL語句 SELECT LIKE like用法
LIKE語句的語法格式是:select * from 表名 where 字段名 like 對應值(子串),它主要是針對字符型字段的,它的作用是在一個字符型字段列中檢索包含對應子串的。
假設有一個數據庫中有個表table1,在table1中有兩個字段,分別是name和sex二者全是字符型數據。現在我們要在姓名字段中查詢以“張”字開頭的記錄,語句如下:
select * from table1 where name like "張*"
如果要查詢以“張”結尾的記錄,則語句如下:
select * from table1 where name like "*張"
這里用到了通配符“*”,可以說,like語句是和通配符分不開的。
數據庫中like語句
在SQL結構化查詢語言中,LIKE語句有著至關重要的作用。
LIKE語句的語法格式是:select * from 表名 where 字段名 like
對應值(子串),它主要是針對字符型字段的,它的作用是在一個字符型字段列中檢索包含對應子串的。
假設有一個數據庫中有個表table1,在table1中有兩個字段,分別是name和sex二者全是字符型數據。現在要在姓名字段中查詢以“張”字開頭的記錄,語句如下:
select * from table1 where name like
"張*"
如果要查詢以“張”結尾的記錄,則語句如下:
select *
from table1 where name like "*張"
這里用到了通配符“*”,可以說,like語句是和通配符分不開的。