日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql字符串截取 mysql将字符串字段转为数字排序或比大小

發布時間:2023/12/3 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql字符串截取 mysql将字符串字段转为数字排序或比大小 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SELECT * FROM Student WHERE 1 = 1 ORDER BY -ID DESC ;

SELECT * FROM Student WHERE 1 = 1 ORDER BY (ID + 1);

mysql將字符串字段轉為數字排序或比大小

2017年09月17日 01:36:31?閱讀數:6566

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/superit401/article/details/78007969

mysql里面有個坑就是,有時按照某個字段的大小排序(或是比大小)發現排序有點錯亂。后來才發現,是我們想當然地把對字符串字段當成數字并按照其大小排序(或是比大小),結果肯定不會是你想要的結果。

這時候需要把字符串轉成數字再排序。

最簡單的辦法就是在字段后面加上+0

如把'123'轉成數字123(以下例子全為親測):

排序:

例:

方法一:ORDER BY '123'+0;(首推)

方法二:ORDER BY?CAST('123' AS SIGNED);
方法三:ORDER BY?CONVERT('123',SIGNED);

比大小:

例:

SELECT '123'+0; ?-- ? 結果為123

SELECT '123'+0>127; ?-- ? 結果為0

SELECT '123'+0>12; ?-- ? 結果為1

SELECT CAST('123' AS SIGNED); ? ?-- ?結果為123

SELECT CONVERT('123',SIGNED)>127; ? -- ?結果為0

SELECT CONVERT('123',SIGNED)>12; ? -- ?結果為1

SELECT CAST('123' AS SIGNED); ?-- 結果為123

SELECT CAST('123' AS SIGNED)>127; ?-- 結果為0

SELECT CAST('123' AS SIGNED)>12; ? -- 結果為1

綜合例子:

SELECT '123'+0>12 ORDER BY CONVERT('123',SIGNED); ?-- ?結果為1

https://blog.csdn.net/github_39325328/article/details/79746103

mysql對字符型字段中的數字進行排序

github_39325328 2018-03-29 18:06:07 ?3293 ?收藏
分類專欄: mysql sql 文章標簽: mysql GetNum() mysql對字符型字段中的數字進行排序
版權

mysql
同時被 2 個專欄收錄
7 篇文章0 訂閱
訂閱專欄

sql
8 篇文章0 訂閱
訂閱專欄
場景:

按樓棟名稱進行排序

比如有一套樓棟數據如下:

直接對樓棟名稱進行order by是沒有效果的,因為目標字段是字符型

思路:

獲取樓棟名稱中的數字,對數字進行排序

解決方案:

創建mysql函數 GetNum(field)

DELIMITER $$
?
CREATE FUNCTION GetNum (Varstring varchar(50))
RETURNS varchar(30)
BEGIN
DECLARE v_length INT DEFAULT 0;
DECLARE v_Tmp varchar(50) default '';
set v_length=CHAR_LENGTH(Varstring);
WHILE v_length > 0 DO
IF (ASCII(mid(Varstring,v_length,1))>47 and ASCII(mid(Varstring,v_length,1))<58 ) ? THEN
set v_Tmp=concat(v_Tmp,mid(Varstring,v_length,1));
END IF;
SET v_length = v_length - 1;
END WHILE;
RETURN REVERSE(v_Tmp);
END$$
?
DELIMITER ;
調用 GetNum(field) 函數,并沒有實現按數字排序

原因是因為GetNum(field)得到的結果也是字符型,所以要+0轉化為int類型實現排序

?
?

https://www.cnblogs.com/heyonggang/p/8117754.html

Mysql字符串截取總結:left()、right()、substring()、substring_index()

同步首發:https://yuanrengu.com/2020/9cfe2ad6.html

在實際的項目開發中有時會有對數據庫某字段截取部分的需求,這種場景有時直接通過數據庫操作來實現比通過代碼實現要更方便快捷些,mysql有很多字符串函數可以用來處理這些需求,如Mysql字符串截取總結:left()、right()、substring()、substring_index()。

一.從開始截取字符串

用法:left(str, length),即:left(被截取字符串, 截取長度)

SELECT LEFT('www.yuanrengu.com',8)

結果為:www.yuan

二.從開始截取字符串

用法:right(str, length),即:right(被截取字符串, 截取長度)

SELECT RIGHT('www.yuanrengu.com',6)

結果為:gu.com

三.截取特定長度的字符串

用法:

  • substring(str, pos),即:substring(被截取字符串, 從第幾位開始截取)
  • substring(str, pos, length),即:substring(被截取字符串,從第幾位開始截取,截取長度)

1.從字符串的第9個字符開始讀取直至結束

SELECT SUBSTRING('www.yuanrengu.com', 9)

結果為:rengu.com

2.從字符串的第9個字符開始,只取3個字符

SELECT SUBSTRING('www.yuanrengu.com', 9, 3)

結果為:ren
3.從字符串的倒數第6個字符開始讀取直至結束

SELECT SUBSTRING('www.yuanrengu.com', -6)

結果為:gu.com

4.從字符串的倒數第6個字符開始讀取,只取2個字符

SELECT SUBSTRING('www.yuanrengu.com', -6, 2)

結果為:gu

四.按關鍵字進行讀取

用法:substring_index(str, delim, count),即:substring_index(被截取字符串,關鍵字,關鍵字出現的次數)

1.截取第二個“.”之的所有字符

SELECT SUBSTRING_INDEX('www.yuanrengu.com', '.', 2);

結果為:www.yuanrengu

2.截取倒數第二個“.”之的所有字符

SELECT SUBSTRING_INDEX('www.yuanrengu.com', '.', -2);

結果為:yuanrengu.com

3.如果關鍵字不存在,則返回整個字符串

SELECT SUBSTRING_INDEX('www.yuanrengu.com', 'sprite', 1);

結果為:www.yuanrengu.com

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Mysql字符串截取 mysql将字符串字段转为数字排序或比大小的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。