拆字串問題

2021-04-01 21:27:08 字數 1569 閱讀 4963

我有乙個table mytable (iname varchar(6),idesc varchar(2000))

內容示例如下:

iname                   idesc

a                       agf/dfgh

b                       rty/fghjk/uyt/fghj

f                       rty/ghj/cvb

h                       uio/vbn/4567/678

...即欄位idesc的內容由'/'字元分割,先想得到下面的結果:

iname                   inewdesc

a                       afg

a                       dfgh

b                       rty

b                       fghjk

b                       uyt

...--以往解決方法,寫乙個函式然後迴圈拆,效率低

--先提供乙個巧妙利用連表查詢解決方法,如下:

--建立測試環境

create table str_test (iname varchar(6),idesc varchar(2000))

insert into str_test select 'a','agf/dfgh'

union all select 'b','rty/fghjk/uyt/fghj'

union all select 'f','rty/ghj/cvb'

union all select 'h','uio/vbn/4567/678'

--巧妙連表方法

select top 2000 id=identity(int,1,1) into # from syscolumns a,syscolumns b

select a.iname,

inewdesc=substring(a.idesc,b.id,charindex('/',a.idesc+'/',b.id)-b.id)

from str_test a, # b

where substring('/'+a.idesc,b.id,1)='/'

order by a.iname,b.id

drop table #

--查詢結果

iname  inewdesc 

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

a      agf

a      dfgh

b      rty

b      fghjk

b      uyt

b      fghj

f      rty

f      ghj

f      cvb

h      uio

h      vbn

h      4567

h      678

--刪除測試環境

drop table str_test

lua 按utf8編碼拆字串

在做 遊戲 使用者註冊時 使用者名稱要求 只能全是英文本母 或者 只能是漢字 這個時候出現乙個問題 漢字該怎麼檢查呢 local str1 發燒發的撒地方 if str1 match 128 254 then print ok2 else print not ok2 end從網上找了上述方法 你以為...

字串問題 翻轉字串

題目 給定乙個字元型別的陣列chas,請在單詞間做逆序調整,只要做到單詞順序逆序即可,對空格的位置沒有特別要求。例如把chas看成字串為 i love you 調整成 you love i 補充題目 給定乙個字元型別的陣列chas和乙個整數size,請把大小為size的左半區整體移到右半區,右半區整...

字串問題

char str1 abcd char str2 efgh str1 str2 這個操作是合法的,結果也是正確的 這兩個字串都是儲存在棧上,可以修改其中的內容。其中,str1 str2相當於把str2字串的第乙個字元 e 賦給了str1的第乙個字元,因此,str1就變成了 ebcd 但是如果用字串指...