亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL中CONCAT()函數(shù)出現(xiàn)值為空的問題及解決辦法

 更新時間:2024年07月18日 11:02:39   作者:老周聊架構  
項目中查詢用到了concat()拼接函數(shù),本文主要介紹了MySQL中CONCAT()函數(shù)出現(xiàn)值為空的問題及解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

項目中用到了三個字段,需要對它們用concat() 函數(shù)進行拼接以及分組group by,下面一鍋端了concat()的這個函數(shù),有concat()、concat_ws()和 group_concat() 字段拼接的用法,我們來自己造點數(shù)據(jù),做個測試。

一、concat()

1、準備一張test_concat

CREATE TABLE `test_concat` (
  `id` int(11) NOT NULL,
  `name` varchar(25) default NULL,
  `age` int(5) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、插入一些數(shù)據(jù)

INSERT INTO test_concat (id, NAME, age) 
VALUES
	(1, 'andy', 18),
	(1, 'bob', 20),
	(2, 'jack', 33),
	(2, NULL, 22),
	(3, 'riemann', 28),
  	(3, 'riemann', 28),
  	(1, 'bob', 20)

3、執(zhí)行sql

SELECT * FROM test_concat;

在這里插入圖片描述

SELECT CONCAT(id,name,age) FROM test_concat;

在這里插入圖片描述

出現(xiàn)了null值。。。

4、解決方式

SELECT CONCAT(id,IFNULL(name,''),age) FROM test_concat;

在這里插入圖片描述

要是name字段的值是空字符串會怎么樣呢?

繼續(xù)往下看

這時候插入的時候換成了空字符串 ' '

INSERT INTO test_concat (id, NAME, age) 
VALUES
	(1, 'andy', 18),
	(1, 'bob', 20),
	(2, 'jack', 33),
	(2, '', 22),
	(3, 'riemann', 28),
    (3, 'riemann', 28),
    (1, 'bob', 20)

在這里插入圖片描述

沒有顯示null,而是顯示一片空白。

SELECT CONCAT(id,IFNULL(name,''),age) FROM test_concat;

SELECT CONCAT(id, CASE WHEN name = '' or name is NULL THEN '' ELSE name END, age) FROM test_concat;

其實這兩種方法都可以,第二種更嚴謹一些。

二、concat_ws()

使用函數(shù)CONCAT_WS()。使用語法為:CONCAT_WS(separator,str1,str2,…)

CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。

第一個參數(shù)是其它參數(shù)的分隔符。分隔符的位置放在要連接的兩個字符串之間。分隔符可以是一個字符串,也可以是其它參數(shù)。如果分隔符為 NULL,則結果為 NULL。函數(shù)會忽略任何分隔符參數(shù)后的 NULL 值。但是CONCAT_WS()不會忽略任何空字符串。 (然而會忽略所有的 NULL)。

SELECT CONCAT_WS('-',id,name,age) FROM test_concat;

在這里插入圖片描述

直接不需要判斷為不為空,這種方式不會出現(xiàn)null值的情況!

三、group_concat()

GROUP_CONCAT([DISTINCT] expr [,expr …]

[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col …]]

[SEPARATOR str_val])

在 MySQL 中,你可以得到表達式結合體的連結值。通過使用 DISTINCT 可以排除重復值。如果希望對結果中的值進行排序,可以使用 ORDER BY 子句。

SEPARATOR 是一個字符串值,它被用于插入到結果值中。缺省為一個逗號 (","),可以通過指定 SEPARATOR “” 完全地移除這個分隔符。

可以通過變量 group_concat_max_len 設置一個最大的長度。在運行時執(zhí)行的句法如下: SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;

如果最大長度被設置,結果值被剪切到這個最大長度。如果分組的字符過長,可以對系統(tǒng)參數(shù)進行設置:SET @@global.group_concat_max_len=40000;

使用示例:

SELECT id, GROUP_CONCAT(name) FROM test_concat WHERE id in('1', '2') GROUP BY id;

在這里插入圖片描述

SELECT id, GROUP_CONCAT(distinct name ORDER BY name DESC SEPARATOR '_') FROM test_concat WHERE id in('1', '2') GROUP BY id;

在這里插入圖片描述

SELECT id, GROUP_CONCAT(CONCAT_WS(', ',name,age) ORDER BY name DESC SEPARATOR '. ') FROM test_concat WHERE id in('1', '2') GROUP BY id;

在這里插入圖片描述

到此這篇關于MySQL中CONCAT()函數(shù)出現(xiàn)值為空的問題及解決辦法的文章就介紹到這了,更多相關MySQL CONCAT()空值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • 修改MySQL的數(shù)據(jù)庫引擎為INNODB的方法

    修改MySQL的數(shù)據(jù)庫引擎為INNODB的方法

    本文主要介紹了修改MySQL的數(shù)據(jù)庫引擎為INNODB的方法,希望能對您有所幫助。
    2015-09-09
  • MySQL 啟動報錯:File ./mysql-bin.index not found (Errcode: 13)

    MySQL 啟動報錯:File ./mysql-bin.index not found (Errcode: 13)

    這篇文章主要介紹了MySQL 啟動報錯:File ./mysql-bin.index not found (Errcode: 13)的解決方法,需要的朋友可以參考下
    2014-07-07
  • 數(shù)據(jù)庫中row_number()、rank() 和 dense_rank() 的區(qū)別

    數(shù)據(jù)庫中row_number()、rank() 和 dense_rank() 的區(qū)別

    本文主要結合了SQL中的排名函數(shù)ROW_NUMBER()、RANK()和DENSE_RANK(),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-11-11
  • Mysql5.5安裝配置方法及中文亂碼的快速解決方法

    Mysql5.5安裝配置方法及中文亂碼的快速解決方法

    這篇文章主要介紹了Mysql5.5安裝配置方法以及mysql5.5中文亂碼的快速解決方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • MySQL的索引失效的原因?qū)嵗敖鉀Q方案

    MySQL的索引失效的原因?qū)嵗敖鉀Q方案

    這篇文章主要討論了MySQL索引失效的常見原因及其解決方案,它涵蓋了數(shù)據(jù)類型不匹配、隱式轉換、函數(shù)或表達式、范圍查詢、LIKE查詢、OR條件、全表掃描、索引選擇性低、覆蓋索引不足和統(tǒng)計信息不準確等問題,感興趣的朋友一起看看吧
    2024-12-12
  • Linux下mysql 5.6.17安裝圖文教程詳細版

    Linux下mysql 5.6.17安裝圖文教程詳細版

    這篇文章主要為大家詳細介紹了Linux下mysql 5.6.17安裝圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 升級到mysql-connector-java8.0.27的注意事項

    升級到mysql-connector-java8.0.27的注意事項

    這篇文章主要介紹了升級到mysql-connector-java8.0.27的注意事項,凡是升級總會碰到點問題,換了連接器后部署果然報錯了,下面小編給大家分享解決方法,需要的朋友可以參考下
    2021-12-12
  • 最新評論