問題:mysql語句中使用like后面的%(百分號)
創(chuàng)新互聯(lián)公司主營咸寧網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,咸寧h5微信平臺小程序開發(fā)搭建,咸寧網(wǎng)站營銷推廣歡迎咸寧等地區(qū)企業(yè)咨詢
是不是越多執(zhí)行效率越慢!
總用時:0.0489秒
0.0691
0.0485
0.0467
SELECT
`goods_name`,
`goods_img`,
`sku_id`,
`import`
FROM
`goods`
WHERE
`goods_name`
LIKE
'%iPhone%iPod%'
AND
`stime`
1413877244
AND
`etime`
1413877244
ORDER
BY
`flag`
DESC
總用時:0.0460秒
0.0430
0.0493
0.0783
0.0496
SELECT
`goods_name`,
`goods_img`,
`sku_id`,
`import`
FROM
`goods`
WHERE
`goods_name`
LIKE
'%iPhone%'
AND
`goods_name`
LIKE
'%iPod%'
AND
`stime`
1413877367
AND
`etime`
1413877367
ORDER
BY
`flag`
DESC
總用時:0.0458秒
0.0441秒
0.0449秒
SELECT
`goods_name`,
`goods_img`,
`sku_id`,
`import`
FROM
`goods`
WHERE
`goods_name`
LIKE
'%%%%%%%%%%%%%%%%%%%%%%%iPhone%iPod%%%%%%%%%%%%%%%%%%%%%%%'
AND
`stime`
1413877997
AND
`etime`
1413877997
ORDER
BY
`flag`
DESC
實踐證明,百分號的數(shù)量不影響sql執(zhí)行的速度。這幾種方法的效率都是差不多的。
以上是我測試的結(jié)果。個人可根據(jù)自己的實際需求去選擇寫法!建議是最好選擇第二種!
建立數(shù)據(jù)庫表時,百分?jǐn)?shù)要用字符類型。
原因:因為百分號(%)不是可讀的數(shù)字類型,除非用小數(shù)表示,否則只能用字符類型來保存。
工具:mysql 5.6
測試步驟:
1、數(shù)據(jù)庫中test表結(jié)構(gòu)如下,其中col1為字符類型,col2位數(shù)字類型
2、在col1中插入50%這個數(shù)據(jù)。語句如下:
insert?into?test(col1)?values?('50%');
插入后結(jié)果:
3、在col2中也插入50%這個數(shù)據(jù),語句如下:
update?test?set?col2=50%;
系統(tǒng)會報錯:
總結(jié):說明帶百分號的數(shù)據(jù)只能用字符類型來存儲。
CONCAT(字段, '% ')
select CONCAT(sum(a)/(sum(a)+sum(b)*100), '% ')
from c
以百分比形式輸出sql查詢結(jié)果的步驟如下:要準(zhǔn)備的材料是:computer,sql querier。
1.首先,打開sql查詢器并連接到需要查詢的數(shù)據(jù)表。以測試表的得分字段為例。
2.單擊“查詢”按鈕并鍵入:選擇`name`,concat(truncate(score * 100,2),'%')作為test的分?jǐn)?shù)。
3.單擊“運行”按鈕。此時,得分字段的查詢結(jié)果可以顯示為百分比。
那你查詢前把你要查詢的特殊符號替換下 % 替換為 \% 這樣mysql 就不會把你輸入的 % 當(dāng)成特殊字符了
select * from table where name like '/%' escape '/';
這樣就行了,如果你要查找a%b
則可以
select * from table where name like 'a/%b' escape '/';