sql凝查詢like語句中可以用變數嗎

時間 2021-10-14 19:03:23

1樓:灩麗

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

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

2、接下來就直接在select中運用like,最普遍的是和兩個%搭配。

3、接著如果百分號放在like查詢串的後面則代表後面的內容不限制。

4、然後如果將百分號放在like查詢串的前面,則代表以什麼結尾,前面的內容不限制。

5、另外like查詢串中還可以使用下劃線,代表佔位符。

6、後如果like串**現中括號則代表的是可選內容。

2樓:刺友互

sql模糊查詢like語句中可以用變數,使用方法為:

1、開啟資料庫管理工具,開啟sql語言編寫窗體。

2、如果我們知道某欄位的開頭部分,我們可以用 like 『xx%' ,select top 10 * from ck_ate where model like 'psm24w%'。

3、如果我們知道某欄位的中間部分,可以使用 like 『%xx%』select top 10 * from ck_ate where model like '%24w%'。

4、如果我們知道某欄位的結尾部分,我們庫使用 like '%xx'select top 10 * from ck_ate where model like '%-r-fa1'。

6、模糊查詢可能涉及比較大的資料量,為避免查詢時把資料庫資源耗盡,我們加上一些限制條件  比如 前10行  top 10。

3樓:匿名使用者

sql的模糊查詢like字句是可以的使用變數的。

如圖:使用 + 號連線變數,或者在變數中新增 % 都可以,如declare @test varchar(20)set @test = '李%'

select b from a where b like @test

4樓:匿名使用者

把這個查詢寫成儲存過程

5樓:匿名使用者

declare @bianliang varchar(10)

set @bianliang='10'

select * from ch_20120523_863_temp where ip like '%'+@bianliang+'%'

sql裡怎麼用變數實現模糊查詢

6樓:匿名使用者

select * from user where user_name like '%' || 變數 || '%'

這樣寫就可以了。

sql語句模糊查詢能用佔位符麼

7樓:永恆度蘭寧

sql一定要改,呼叫可以不改:

不改呼叫改sql:

("select * from customer where name like '%'|| @name ||'%'"

改呼叫同時改sql:

sql:select * from customer where name like @name"

new sqlparameter("@name", '%'+name+'%')

字串連線符我隨便寫的,根據資料庫型別改即可。

8樓:匿名使用者

你那個百分號和@中間有空格,去掉,空格也佔字元位的

還有,你是什麼資料庫呀?

9樓:匿名使用者

應該將 @name=「%+parametername+%」整體作為引數

10樓:匿名使用者

你為什麼一定要這樣寫呢??用連線字串的形式不行嗎??

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

11樓:開心地的春天

在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欄位中含有「明」的記錄,所以說,當我們作字元型欄位包含一個子串的查詢時最好採用「%」而不用「*」,用「*」的時候只在開頭或者只在結尾時,而不能兩端全由「*」代替任意字元的情況下。

12樓:匿名使用者

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

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

假設有一個資料庫中有個表table1,在table1中有兩個欄位,分別是name和***二者全是字元型資料。現在我們要在姓名欄位中查詢以「張」字開頭的記錄,語句如下:

select * from table1 where name like "張*"

如果要查詢以「張」結尾的記錄,則語句如下:

select * from table1 where name like "*張"

這裡用到了萬用字元「*」,可以說,like語句是和萬用字元分不開的。下面我們就詳細介紹一下萬用字元。

匹配型別

模式舉例 及 代表值

說明多個字元

*c*c代表cc,cbc,cbc,cabdfec等

它同於dos命令中的萬用字元,代表多個字元。

多個字元

%%c%代表agdcagd等

這種方法在很多程式中要用到,主要是查詢包含子串的。

特殊字元

[*]a[*]a代表a*a

代替*單字元

?b?b代表brb,bfb等

同於dos命令中的?萬用字元,代表單個字元

單數字#

k#k代表k1k,k8k,k0k

大致同上,不同的是代只能代表單個數字。

字元範圍

- [a-z]代表a到z的26個字母中任意一個 指定一個範圍中任意一個

續上排除 [!字元] [!a-z]代表9,0,%,*等 它只代表單個字元

數字排除 [!數字] [!0-9]代表a,b,c,d等 同上

組合型別 字元[範圍型別]字元 cc[!a-d]#代表ccf#等 可以和其它幾種方式組合使用

假設表table1中有以下記錄:

name ***

張小明     男

李明天       男

李a天       女

王5五       男

王清五      男

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

例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語句的where查詢語句中 select userid

這裡的 是引數佔位符,表示在執行查詢時用傳入的引數替換該內容在你的例子中,pstmt.setstring 1,userid 將應用得到的引數userid傳給第一個引數,pstmt.setstring 2,password 將應用得到的引數password傳給第二個引數 小白九久玩科技 where u...

sql語句中,SQL語句中USE

三歲喝酒 use pubs 選擇 名字 pubs 的資料庫 select title id from sales where title id in 查詢欄位title id符合號內限定條件的表sales的 title id 列 select title id from titles where t...

sql連線查詢語句中from子句中表的順序有什麼要求

嚴格上來說是沒有要求的,他們有兩種寫法,一種是ansi sql,一種是trans sql.ansi sql select from table1,table2,table3 where table1.id table2.id and table3.id table2.pid trans sql se...