MySql中指定符號分割並分行展示

2022-07-09 12:48:13 字數 2066 閱讀 6378

1.涉及到的函式三個:

1.1 replace('value','str1','str2')

用法規則:使用str2替換掉value中的所有的str1;

select

replace('

我來了','

來','

走')

執行結果如下:

1.2 length(str)

用法規則:獲取字串的長度,使用 uft8(unicode 的一種變長字元編碼,又稱萬國碼)編碼字符集時,乙個漢字是 3 個位元組,乙個數字或字母是乙個位元組。

select length('

我來了'),length('you')

執行結果如下:

1.3 substring_index(str,delim,count)

用法規則:substring_index(「待擷取有用部分的字串」,「擷取資料依據的字元」,擷取字元的位置n(擷取資料依據的字元出現的次數))

如果count是正數則從左往右擷取,如果count是負數則從右往左擷取,count是從1開始的不存在0,否則查詢結果為空;

select substring_index('

我,是,菜,雞

',',

',1)

--以第乙個逗號為分割,擷取第乙個字串

執行結果如下:

select substring_index('

我,是,菜,雞

',',

',2)

--以第二個逗號為分割,擷取前兩個字串

執行結果如下:

select substring_index('

我,是,菜,雞

',',

',-2

)-- 從右往左數第二個逗號為分割,擷取兩個字串

執行結果如下:

案例:現有一張table1表,表中資訊如截圖,需要將表中的roles欄位中的值按照『,』分割,並且每個字串展示為1行:

實現的sql如下:

select

a.owner_type,substring_index( substring_index( a.roles, ',

', b.help_topic_id +

1 ), '

,',-1)

from

table1 a

join mysql.help_topic b on b.help_topic_id < ( length( a.roles ) - length( replace ( a.roles, '

,', '' ) ) +

1 );

執行結果:

案例語句分析:

substring_index(substring_index(a.roles,'

,',b.help_topic_id +

1),'

,',-

1)

在mysql.help_topic表中help_topic_id的值是(0,1,2······n),是從零開始的,substring_index(str,delim,count)中的count位置函式必須是從1開始,所以需要(b.help_topic_id + 1)從1開始迴圈,當help_topic_id 值為0時以上語句取值為第乙個字串,當help_topic_id 值為1是以上語句執行後取第二個字串,如截圖:

以下sql欄位執行結果求的是roles的值可以按照 ' , ' 被分割為多少個字串:

(length(a.roles) - length(replace(a.roles,'

,','')) +

1 )

執行後的結果如截圖:

Qt開啟指定目錄並選中指定檔案

這篇部落格 上說的方法適用,但windows上需要注意乙個問題 要開啟的檔案路徑必須是 連線的,所以需要在程式中新增一句 如下 qstring filename qprocess process filename 你要開啟的檔案路徑 包括檔名 ifdef win32 filename.replace...

SQL按指定符號分割字串函式

一 sql分割字串,返回臨時表 方法一 1 create function dbo f split 2 3 cvarchar 2000 需要分割的字串 例如 1,2,3,4,5 我 和 你 4 split varchar 2 分隔符 例如 5 6returns ttable col varchar ...

python按行讀取檔案並找出其中指定字串

python按行讀取檔案並找出其中指定字串 coding utf 8 import os,time,sys,re reload sys sys.setdefaultencodingtadykzxp utf8 不設定,否則編碼方式不對應,無法找出字串 file open path sum 0 for ...