1樓:匿名使用者
為什麼是0,3這樣呢? 0明顯沒有對應的classid啊id classid productname1 1,2 產品一
2 1,3 產品二
3 1,2,3 產品三
查詢分類3的方法:
select * from product where classid like '%3,%' or classid like '%,3%' or classid like '%,3,%'
當然上面的方式比較笨拙,但是樓主的資料表結構顯然還是不夠優化的。
一般來說,我們在設計類似樓主這個product表結構的時候,會限制其classid的最大個數。例如規定一個產品最多同時屬於3個分類,那麼在儲存的時候我們可以:
id classid productname1 1,2,0 產品一
2 1,3,0 產品二
3 1,2,3 產品三
如上結構,查詢分類3,我們就可以這樣查詢了:
select * from product where classid like '3,[^3],[^3]' or classid like ''[^3],3,[^3]' or classid like '[^3],[^3],3'
2樓:匿名使用者
select * from product where id > 0 and ',' + classid + ',' like '%,1,%' and istop = 1
這樣寫肯定行
3樓:匿名使用者
class表的結構建立得不好。parentpath應該把一個分量拆成多個分量,像下面這樣存資料:
classid classname parentpath1 分類一 0
2 分類二 0,
2 分類二 1
3 分類三 0,
3 分類三 1,3 分類三 2
然後用(classid,parentpath)做主鍵。
結構改合適了,查詢就容易
sql語句進行模糊查詢時如何同時用一句話篩選多個關鍵詞
4樓:匿名使用者
1、建立測試表,create table test_a(zlyt varchar2(20));
2、插入測試資料,並提交;
insert into test_a values('abc');
insert into test_a values('dfs');
insert into test_a values('rte');
commit;
3、執行sql語句,
select zlyt, replace(replace(zlyt, 'b', 'x'), 'f', 'x') zlyt2
from test_a t
where zlyt like '%b%'
or zlyt like '%f%'
擴充套件資料
1、在進行資料庫查詢時,有完整查詢和模糊查詢之分。
一般模糊查詢語句如下:select 欄位 from 表 where 某欄位 like 條件,其中關於條件,sql提供了四種匹配模式:
1)% :表示任意0個或多個字元。可匹配任意型別和長度的字元,有些情況下若是中文,請使用兩個百分號(%%)表示。
2)_ : 表示任意單個字元。匹配單個任意字元,它常用來限制表示式的字元長度語句:
3)[ ] :表示括號內所列字元中的一個(類似正規表示式)。指定一個字元、字串或範圍,要求所匹配物件為它們中的任一個。
4)[^ ] :表示不在括號所列之內的單個字元。其取值和 相同,但它要求所匹配物件為指定字元以外的任一個字元。
2、replace官方語法:
replace ( string_expression , string_pattern , string_replacement )
1)引數含義:
string_expression 要搜尋的字串表示式。string_expression 可以是字元或二進位制資料型別。
string_pattern 是要查詢的子字串。string_pattern 可以是字元或二進位制資料型別。string_pattern 不能是空字串 ('')。
string_replacement 替換字串。string_replacement 可以是字元或二進位制資料型別。
2)返回型別:
如果其中的一個輸入引數資料型別為 nvarchar,則返回 nvarchar;否則 replace 返回 varchar。
如果任何一個引數為 null,則返回 null。
replace(string,from_str,to_str) 即:將string中所有出現的from_str替換為to_str。
5樓:流浪雲風
你自己都說了,使用模糊查詢就可以了。
如果是查詢zlyt中含有b或f可以這樣寫:
select * from 表名 where zlyt like '%b%' or zlyt like '%f%'
如果是查詢zlyt中含有b和f可以這樣寫:
select * from 表名 where zlyt like '%b%f%' or zlyt like '%f%b%';
不同的是先後順序,根據你的情況自己可能需要調整
更新:update 表名 set 欄位名 = 修改後的新值
where zlyt like '%b%' or zlyt like '%f%';
where條件可以參考上面select中where條件的寫法,看你要匹配的規則。
請教sql語句實現多條件模糊查詢比較好的寫法
6樓:匿名使用者
$sql = "select * from 表名 where id link '%$id%'";
sql模糊查詢語句怎麼寫啊
7樓:匿名使用者
使用sql 萬用字元可以替代一個或多個字元,即模糊查詢。
sql 萬用字元必須與 like 運算子一起使用。在 sql 中,可使用以下萬用字元如下:
1、% 替代一個或多個字元
2、_ 僅替代一個字元
3、[charlist] 字元列中的任何單一字元
4、[^charlist]或者[!charlist] 不在字元列中的任何單一字元
以圖中**為例,說明一下各萬用字元用法
1、 查詢居住在以 "ne" 開始的城市裡的人:
select * from persons where city like 'ne%'
2、查詢居住在包含 "lond" 的城市裡的人:
select * from persons where city like '%lond%'
3、查詢名字的第一個字元之後是 "eorge" 的人:
select * from persons where firstname like '_eorge'
4、查詢記錄的姓氏以 "c" 開頭,然後是一個任意字元,然後是 "r",然後是任意字元,然後是 "er":
select * from persons where lastname like 'c_r_er'
5、查詢居住的城市以 "a" 或 "l" 或 "n" 開頭的人:
select * from persons where city like '[aln]%'
6、查詢居住的城市不以 "a" 或 "l" 或 "n" 開頭的人:
select * from persons where city like '[!aln]%'
8樓:填寫使用者名稱
select * from pwdmanger where 欄位 like '%123%' --你寫的這個沒問題啊,你把表的資料截圖貼上來。
9樓:我tm不管
select * from 表 where aaa not like '%'+@bbb+'%'
10樓:匿名使用者
select * from pwdmanger where [zid] like '%123%' or [name] like '%123%' or [url] like '%123%' or [id] like '%123%' or [pwd] like '%123%' or [mb] like '%123%'
11樓:夏日之一地陽光
select * from aaa not like '%'+@bbb+'%'
12樓:匿名使用者
怎麼根據名字查相應**(有資料庫)
13樓:
not like。試試
sql模糊查詢語句
14樓:
"%"可以表示多個字元,
"_"只能表示一個字元,
一個漢字是兩個字元,所以表示漢字應該用兩個_,即「__」
15樓:
一樓的回答我認為是正確的
不過樓主要是想弄的很清楚的話,建議下個系統看看人家裡面的模糊查詢是怎麼搞的
因為模糊可以是在一個欄位上的,也可以是在多個欄位上的啊再看看書什麼的,思考思考就很有自己的想法了
16樓:幸巴達
用like加萬用字元"_", "%".
sql語句中,如何同時模糊查詢多個字串
17樓:匿名使用者
把這些姓插入到一個新表中
比如 表:a
name張李
select 姓名.* from 姓名,a where 姓名.name like a.name + '%'
18樓:匿名使用者
select * from name where 姓名 like '[張李趙錢孫]%'
19樓:匿名使用者
你看下面的方法,是否能幫到你:
select * from name where substr(姓名,1,1) in ('李','張','劉');
sql語句如何模糊查詢兩個表中兩列的包含情況 50
20樓:匿名使用者
select * from 表名 where [col1] like convert(nvarchar,'%'+(select col2 from dbo.userinfo where 條件)+'%') //注意 因為 like '%%這裡面的模糊查詢數量唯一 所以 (select col2 from dbo.userinfo where 條件) 必須唯一 這裡就不能再有幾個條件了 追問:
如果資料是在兩張表呢?即表a col1 大連市中山區 表b col2 中山 怎樣能查處col1包含col2的資料呢? 回答:
select * from 表名1 where [col1] like convert(nvarchar,'%'+(select col2 from 表名2 where 條件)+'%') 這裡有2個 % 如果你想要 中山%就去掉前面一個 具體點就是 如果 要 %中山 就去掉後面一個比如你要選擇 col1 的資料要和某個酒店所在的地方 比如 表b col3 中存的是酒店名稱 酒店是 萬達酒店 對應的 col2是 中山 select * from 表名1 where [col1] like convert(nvarchar,'%'+(select col2 from 表名2 where col3 ='萬達酒店')+'%') 這樣就篩選出了 所有和萬達酒店所在地方名字類似的地區了
sql語句的where查詢語句中 select userid
這裡的 是引數佔位符,表示在執行查詢時用傳入的引數替換該內容在你的例子中,pstmt.setstring 1,userid 將應用得到的引數userid傳給第一個引數,pstmt.setstring 2,password 將應用得到的引數password傳給第二個引數 小白九久玩科技 where u...
求一SQL語句 如何查詢最大的前值
三點水加個木 mysql用法 select 欄位名 from 表名 order by 欄位名 desc limit 3 mssql用法 select top 3 欄位名 from 表名 order by 欄位名 desc 丸紙 查詢最大的前3個值的方法及編寫方式 1 select max 欄位 值1...
汽車換擋涉及到的物理知識p f,汽車換擋涉及到的物理知識P F V
是的,汽車的最大功率是不變的,如果想在上坡是得到足夠的牽引力,就必須減擋降速,這樣牽引力f就增大了。p 不變 f 增大 v 減小 追問 簡單的說,我想要發動機的工作原理吧,發動機是如何換擋而降速的?這個題不應當再考慮發動機怎麼了。發動機的輸出功率和轉速都應當假設為不變,理解了p 不變 f 增大 v ...