第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

您能在MySQL查詢中拆分/爆炸一個字段嗎?

您能在MySQL查詢中拆分/爆炸一個字段嗎?

Cats萌萌 2019-06-21 15:56:54
您能在MySQL查詢中拆分/爆炸一個字段嗎?我要寫一份關(guān)于一些學(xué)生完成情況的報告。每個學(xué)生都屬于一個客戶。以下是表格(簡化為這個問題)。CREATE TABLE  `clients` (   `clientId` int(10) unsigned NOT NULL auto_increment,   `clientName` varchar(100) NOT NULL default '',   `courseNames` varchar(255) NOT NULL default '')這個courseNames字段包含以逗號分隔的課程名稱字符串,如“ab 01、ab 02、ab 03”。CREATE TABLE  `clientenrols` (   `clientEnrolId` int(10) unsigned NOT NULL auto_increment,   `studentId` int(10) unsigned NOT NULL default '0',   `courseId` tinyint(3) unsigned NOT NULL default '0')這個courseId字段在這里Clients.CourseNames字段中課程名稱的索引..所以,如果客戶courseNames是“ab01,ab02,ab03”,以及courseId報名人數(shù)是2,然后學(xué)生在AB 03。是否有一種方法可以對這些表進(jìn)行一個包含課程名稱的選擇?請記住,會有來自不同客戶的學(xué)生(因此有不同的課程名稱,并不是所有的課程名稱都是順序的,例如:“NW 01,NW 03”)基本上,如果我可以拆分該字段并從結(jié)果數(shù)組中返回一個元素,這就是我所要尋找的。我的意思是用神奇的偽碼:SELECT e.`studentId`, SPLIT(",", c.`courseNames`)[e.`courseId`]FROM ...
查看完整描述

3 回答

?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗 獲得超9個贊

直到現(xiàn)在,我還想在我的SQLdb中保留那些逗號分隔的列表-很好地知道所有的警告!

我一直認(rèn)為它們比查找表(它提供了一種規(guī)范化數(shù)據(jù)庫的方法)有好處。經(jīng)過幾天的拒絕,我見過光:

  • 在一個字段中使用逗號分隔的值時,使用查找表不會導(dǎo)致比那些難看的字符串操作更多的代碼。
  • 查找表允許本地數(shù)字格式,因此不大于那些CSV字段。不過,它要小一些。
  • 在高級語言代碼(SQL和PHP)中,所涉及的字符串操作很小,但與使用整數(shù)數(shù)組相比代價很高。
  • 數(shù)據(jù)庫并不是人類所能閱讀的,因為它們的可讀性/直接可編輯性,所以試圖堅持它們的結(jié)構(gòu)是愚蠢的,就像我所做的那樣。

簡而言之,MySQL中沒有本機(jī)splp()函數(shù)是有原因的。


查看完整回答
反對 回復(fù) 2019-06-21
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗 獲得超11個贊

考慮到這是一個很受歡迎的問題-答案是肯定的。

column表中table包含所有昏迷分離值:

CREATE TEMPORARY TABLE temp (val CHAR(255));SET @S1 = CONCAT("INSERT INTO temp (val) VALUES ('",REPLACE((SELECT GROUP_CONCAT( DISTINCT 
 `column`) AS data FROM `table`), ",", "'),('"),"');");PREPARE stmt1 FROM @s1;EXECUTE stmt1;SELECT DISTINCT(val) FROM temp;

請記住在數(shù)據(jù)庫中存儲CSV


per@mark amery-因為這會將昏迷分離值轉(zhuǎn)換為INSERT語句時,在未清除的數(shù)據(jù)上運(yùn)行時要小心。


請重申一下將CSV存儲在DB中;此函數(shù)的目的是將CSV轉(zhuǎn)換為合理的DB結(jié)構(gòu),而不是在代碼中的任何地方使用。如果您必須在生產(chǎn)中使用它,請重新考慮您的DB結(jié)構(gòu)。


查看完整回答
反對 回復(fù) 2019-06-21
  • 3 回答
  • 0 關(guān)注
  • 890 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號