2015年3月3日 星期二

db2 sql substring (tag like string)

通常欄位資料都是一格一種資料,不過有時候會有像備註備忘~
或是不想加欄位,找了既有不用的某個欄位來塞一堆更奇怪的東西~
等ooxx的原因~

所以就是解析字串format,拿值出來的時候~就是只能用substring的作法~~
因為DB SQL通常只能一道做完,沒有人在split後又再取的...
使用符號分隔萬一順序沒標到分隔也會抓不出來~
所以在多種資料,硬要擠在同一欄時~我大多會使用xml的 內容 表示方法。
(substring時,頭尾都會不一樣,不用怕index用到別人的)

但如果資料庫支援 json格式的話~會傾向使用 json...因為現在json在 程式語言 parser比 xml好用~

總之~這次就是用 tag形式儲存就是了...
內容範例為: 欄位名(MEMO)
<NAME>Alex</NAME><ID>9527</ID>

取 NAME
SUBSTR(MEMO, LOCATE('<NAME>',MEMO)+6, LOCATE('</NAME>',MEMO)-LOCATE('<NAME>',MEMO)-6 )

取ID
SUBSTR(MEMO, LOCATE('<ID>',MEMO)+4, LOCATE('</ID>',MEMO)-LOCATE('<ID>',MEMO)-4 )

要注意的就是LOCATE(indexOf)  之後要加減其字的長度就是囉~
若是需要數字 或其他型態, 就是將字串再轉型期望的樣子。

沒有留言: