當前位置:首頁 » 編程語言 » sql查閱like
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql查閱like

發布時間: 2023-03-27 01:02:50

sql語句查詢,多欄位like模糊查詢優化

1、多欄位like模糊查詢優化:
最常見的寫法:
where a like '%xx%' or b like '%xx%' or c like '%xx%';
這種寫法查詢效率低,經過調查,下面的方法可以替代,並且效率高:
2、如果like的關鍵字相同:
where instr(nvl(a, '')||nvl(b,'')||nvl(c,''), 'xx') > 0
把要模糊查詢的欄位先拼接起來,拼接時需要把null轉成『』,否則只要有一個欄位值是空,整個拼接的字元串都成空了, 然後用instr 函數去過濾;
3、如果like的關鍵字不同:
where instr(a, 'xx') > 0 or instr(b, 'yy') > 0 or instr(c, 'zz') > 0
經過測試,這兩種方法都比like效率要高;

Ⅱ SQL模糊查詢Like語句中可以用變數嗎

sql的模糊查詢like字句是可以的使用變數的,具體操作步驟如下:

1、首先我們需要在資料庫中准備演示數據。

Ⅲ 在sql語句中,like所有的用法

在sql結構化查詢語言中,like語句有著至關重要的作用。

like語句的語法格式是:select * from 表名 where 欄位名 like 對應值(子串),它主要是針對字元型欄位的,它的作用是在一個字元型欄位列中檢索包含對應子串的。

A:% 包含零個或多個字元的任意字元串:

1、like'Mc%' 將搜索以字母 Mc 開頭的所有字元串(如 McBadden)。

2、like'%inger' 將搜索以字母 inger 結尾的所有字元串(如 Ringer、Stringer)。

3、like'%en%' 將搜索在任何位置包含字母 en 的所有字元串(如 Bennet、Green、McBadden)。

B:_(下劃線) 任何單個字元:

like'_heryl' 將搜索以字母 heryl 結尾的所有六個字母的名稱(如 Cheryl、Sheryl)。

C:[ ] 指定范圍 ([a-f]) 或集合 ([abcdef]) 中的任何單個字元:

1,like'[CK]ars[eo]n' 將搜索下列字元串:Carsen、Karsen、Carson 和 Karson(如 Carson)。

2、like'[M-Z]inger' 將搜索以字元串 inger 結尾、以從 M 到 Z 的任何單個字母開頭的所有名稱(如 Ringer)。

D:[^] 不屬於指定范圍 ([a-f]) 或集合 ([abcdef]) 的任何單個字元:

like'M[^c]%' 將搜索以字母 M 開頭,並且第二個字母不是 c 的所有名稱(如MacFeather)。

E:* 它同於DOS命令中的通配符,代表多個字元:

c*c代表cc,cBc,cbc,cabdfec等多個字元。

F:?同於DOS命令中的?通配符,代表單個字元 :

b?b代表brb,bFb等

G:# 大致同上,不同的是代只能代表單個數字。k#k代表k1k,k8k,k0k 。

下面我們來舉例說明一下:

例1,查詢name欄位中包含有「明」字的。

select * from table1 where name like '%明%'

例2,查詢name欄位中以「李」字開頭。

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]%'

以上例子能列出什麼值來顯而易見。但在這里,我們著重要說明的是通配符「*」與「%」的區別。

很多朋友會問,為什麼我在以上查詢時有個別的表示所有字元的時候用"%"而不用「*」?先看看下面的例子能分別出現什麼結果:

select * from table1 where name like '*明*'

select * from table1 where name like '%明%'

大家會看到,前一條語句列出來的是所有的記錄,而後一條記錄列出來的是name欄位中含有「明」的記錄,所以說,當我們作字元型欄位包含一個子串的查詢時最好採用「%」而不用「*」,用「*」的時候只在開頭或者只在結尾時,而不能兩端全由「*」代替任意字元的情況下。

Ⅳ 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用法疑問

2種,明細你SQL有問題
sql
=
"select
*
from
where
webName
like
'%中國工商銀行%'
「'
string
name
=
「中國工商銀行」;
sql
=
"select
*
from
where
webName
like
'%『"+name+"』%'
「;
你的寫法轉換成sql就是
找出webName
中的」name「這個名詞
而不是」中國工商銀行上海支行「

Ⅵ sql like怎麼使用

標准SQL中用like進行模糊查詢,有兩個通配符:%百分號代表任意個字元,_下劃線代表一個字元。

1、like'Mc%' 將搜索以字母 Mc 開頭的所有字元串。

2、like'%inger' 將搜索以字母 inger 結尾的所有字元串。

3、like'%en%' 將搜索在任何位置包含字母 en 的所有字元串。

SQL LIKE 操作符語法

『_':下劃線,表示1個任意字元;如 ... where name like '_am',表示僅第一位任意,並以'am'結尾,結果如"Tam","Mam","Pam"等。

'%』: 百分號,表示任意個任意字元;如 ... where name like 『%am',表示前面可以有任意位,只要以'am'結尾,結果如"abcam",「bcdefgham","qwertyuiopam","am"等等。

以上內容參考:網路-SQL LIKE

Ⅶ SQL中like的用法

LIKE是另一個在WHERE子句中會用到的指令。基本上,LIKE能讓我們依據一個套(pattern) 來找出我們要的資料。相對來說,在運用IN的時候,我們完全地知道我們需要的條件;在運用BETWEEN的時候,我們則是列出一個范圍。LIKE的語法如下:

Ⅷ sql like查詢如何不區分大小寫

mysql Like查詢默認是不區分大小寫的:

如:

  • select*fromtabletwheret.colum1likeconcat('%','a','%');

  • select*fromtabletwheret.colum1likeconcat('%','A','%');

  • 兩個sql查詢結果相同;
  • 如果必要區分的話可以這樣:

  • select*fromtabletwherebinaryt.colum1likeconcat('%','A','%');



  • 建表時,欄位加上標識也可以區分大小寫:
  • create table t{

    codevarchar(10) binary

    }