mysql怎么比較數(shù)字 mysql數(shù)字字符串比較大小

001和005能用mysql中max()比較嗎?

在數(shù)據(jù)庫(kù)中當(dāng)然是可以對(duì)001和005使用聚合函數(shù)max()進(jìn)行大小比較的,但是我們必須要留意文本型數(shù)值和數(shù)字型數(shù)值在比較數(shù)值大小時(shí),數(shù)據(jù)庫(kù)引擎對(duì)不同的字段數(shù)據(jù)類型其比較的結(jié)果可能會(huì)有所不同!下面舉例說(shuō)明一下:

創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)與策劃設(shè)計(jì),蓬江網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:蓬江等地區(qū)。蓬江做網(wǎng)站價(jià)格咨詢:18982081108

比如 10和9,按數(shù)字比較大小則 109,但是如果按文本比較大小則 '10''9',因?yàn)閮蓚€(gè)字串比較大小時(shí)是從左邊第一個(gè)字符開(kāi)始逐個(gè)字符進(jìn)行比較的,一旦分出高低,比較將立即結(jié)束不再進(jìn)行余下比較。'10'開(kāi)頭為1,'9'開(kāi)頭為9首尾字符即可分出大小,這樣文本數(shù)字'10'就會(huì)小于文本數(shù)字'9'。我們?cè)賮?lái)看看001和005,則不論是按數(shù)字類型還是按文本類型比較均為前者小于后者,按數(shù)字比較的話自然1小于5,若按字串比較,前兩位打成平手到第三個(gè)字符時(shí)就分出了大小。

數(shù)據(jù)庫(kù)中字符和字串比較大小的排序規(guī)則基本上與我們?nèi)粘J褂玫淖衷~典里的排序規(guī)則相互吻合,兩個(gè)字符或字串根據(jù)它們?cè)谧值渲械呐判蛭恢梦覀兺ǔ2槐匾蕾囯娔X運(yùn)算就可以判斷出誰(shuí)大誰(shuí)小。

現(xiàn)在我們實(shí)測(cè)一下使用聚合函數(shù)Max()對(duì)比文本數(shù)據(jù)類型字段和數(shù)字類型字段的比較結(jié)果,以下是SQL實(shí)驗(yàn)代碼:

drop table if exists t2;

-- 創(chuàng)建測(cè)試表t2含文本數(shù)據(jù)型“數(shù)字”字段和數(shù)字類型字段

create table t2(id int auto_increment primary key,

charNum varchar(10),digitNum int);

-- 插入測(cè)試數(shù)據(jù)

insert into t2(charNum,digitNum) values

('001',1),('005',5),('0010',10);

-- 查看待測(cè)數(shù)據(jù)

select * from t2;

-- 直接選出文本“數(shù)字”字段中的最大值和數(shù)字字段中的最大值

select max(charNum) as maxCharNum,

max(digitNum) as maxDigitNum from t2;

-- 將文本“數(shù)字”字段轉(zhuǎn)換為數(shù)字類型后再選出其最大值,以及直接選出數(shù)字字段最大值

select max(convert(charNum,signed)) as maxConvertCharNum,

max(digitNum) as maxDigitNum from t2;

測(cè)試截圖:

待測(cè)數(shù)據(jù):

直接對(duì)文本和數(shù)字兩種數(shù)據(jù)類型字段使用Max()函數(shù)的返回結(jié)果對(duì)比:

我們可以看到直接對(duì)文本數(shù)據(jù)類型字段使用Max函數(shù)選出的最大值是“005”而非“0010”

下面是將文本數(shù)據(jù)類型數(shù)字轉(zhuǎn)換為數(shù)字?jǐn)?shù)據(jù)類型后才使用Max函數(shù)的對(duì)比結(jié)果:

我們可以看到對(duì)文本類型字段使用Max函數(shù)的最大值已經(jīng)跟數(shù)字?jǐn)?shù)據(jù)類型字段的最大值一樣了,都是10。

總結(jié):

直接對(duì)字符型數(shù)據(jù)類型字段使用聚合函數(shù)Max()、Min()所返回的極值將遵循一般字(詞)典對(duì)字(詞)里設(shè)定的排序規(guī)則,所選出的最大(?。┲挡灰欢ㄊ菙?shù)字意義上的極值,如果需要得出嚴(yán)格數(shù)字意義上的極值就必須先進(jìn)行類型轉(zhuǎn)換,否則得出的結(jié)果可能會(huì)與期望值有出入。

mysql語(yǔ)句怎么比字段里的數(shù)字大小

如果兩邊都是數(shù)字,可以直接用>或<比較,或者用cast轉(zhuǎn)換字段類型后再比較。

mysql兩個(gè)數(shù)字型字符串比較!詳細(xì)如下

我的答案是純手打的,請(qǐng)認(rèn)真看,不要浪費(fèi)我的表情哦~

如果以字符串存儲(chǔ),格式就是 年月日(20120101等于2012-01-01)的話

首先把 日期字符串 轉(zhuǎn)換成 合格的日期

concat_ws(連接符號(hào),字符串1,字符串2...)

第一步代碼:

SELECT

CONCAT_WS('-',

SUBSTRING('20120101',1,4),

SUBSTRING('20120101',5,2),

SUBSTRING('20120101',7,2) ) AS 開(kāi)始日期 ,

CONCAT_WS('-',

SUBSTRING('20120608',1,4),

SUBSTRING('20120608',5,2),

SUBSTRING('20120608',7,2) ) AS 結(jié)束日期 ;

------------------------------------------------------------

第二步,將日期使用日期運(yùn)算函數(shù)進(jìn)行相減:

TIMESTAMPDIFF(返回結(jié)果,日期1,日期2)

最終代碼:

SELECT

CONCAT_WS('-',

SUBSTRING('20120101',1,4),

SUBSTRING('20120101',5,2),

SUBSTRING('20120101',7,2) ) AS 開(kāi)始日期 ,

CONCAT_WS('-',

SUBSTRING('20120608',1,4),

SUBSTRING('20120608',5,2),

SUBSTRING('20120608',7,2) ) AS 結(jié)束日期 ,

TIMESTAMPDIFF(

DAY,

CONCAT_WS('-',

SUBSTRING('20120101',1,4),

SUBSTRING('20120101',5,2),

SUBSTRING('20120101',7,2) ) ,

CONCAT_WS('-',

SUBSTRING('20120608',1,4),

SUBSTRING('20120608',5,2),

SUBSTRING('20120608',7,2) )

) AS 相差天數(shù)

;

-------------------------------------------------------------------------------------

不好意思,看錯(cuò)題目,我以為你是要運(yùn)算。如果是比較,就先把日期轉(zhuǎn)換為時(shí)間戳進(jìn)行比較是這樣:

unix_timestamp(日期)

SELECT

unix_timestamp(

CONCAT_WS('-',

SUBSTRING('20120101',1,4),

SUBSTRING('20120101',5,2),

SUBSTRING('20120101',7,2) )

) AS 開(kāi)始日期,

unix_timestamp(

CONCAT_WS('-',

SUBSTRING('20120608',1,4),

SUBSTRING('20120608',5,2),

SUBSTRING('20120608',7,2) )

) AS 開(kāi)始結(jié)束;

--------------------------------------------------------------------------

直接判斷即可

新建一個(gè)數(shù)據(jù)庫(kù)來(lái)驗(yàn)證:

CREATE DATABASE test5_4_17

DEFAULT CHARACTER SET utf8

DEFAULT COLLATE UTF8_BIN;

#新建一個(gè)test_4_17 使用utf8字符串

USE test5_4_17;

#打開(kāi)數(shù)據(jù)庫(kù)

CREATE TABLE test(

id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,

date_v VARCHAR(30) NOT NULL

);

INSERT INTO test VALUES(NULL,'20110303');

INSERT INTO test VALUES(NULL,'20120303');

INSERT INTO test VALUES(NULL,'20120304');

INSERT INTO test VALUES(NULL,'20130303');

SELECT * FROM test; #查看數(shù)據(jù)有了

SELECT * FROM

test

WHERE

UNIX_TIMESTAMP(date_v) =

unix_timestamp(

CONCAT_WS('-',

SUBSTRING('20120101',1,4),

SUBSTRING('20120101',5,2),

SUBSTRING('20120101',7,2) )

)

AND

UNIX_TIMESTAMP(date_v) =

unix_timestamp(

CONCAT_WS('-',

SUBSTRING('20120608',1,4),

SUBSTRING('20120608',5,2),

SUBSTRING('20120608',7,2) )

)

結(jié)果是

20120303

20120304

-----------------------------------------------------------------------------------------

參數(shù)中的 日期字符串 可以換成 字段名

分享文章:mysql怎么比較數(shù)字 mysql數(shù)字字符串比較大小
文章出自:http://www.muchs.cn/article46/dossheg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站域名注冊(cè)、面包屑導(dǎo)航微信小程序、電子商務(wù)、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)