在sql的使用過程當中,我們偶爾會遇到這樣一種情況,就是需要改變數(shù)據(jù)的存儲形式,比如數(shù)據(jù)庫某一張表(info)當中有一個字段educational(學(xué)歷),以前存儲的是json數(shù)組,現(xiàn)在由于需求的改變,我需要將數(shù)據(jù)的存儲形式改成json格式,這樣我們就需要對數(shù)據(jù)進行替換,當數(shù)據(jù)量太大時,人工操作明顯是不可取的,所以作者就找到了sql當中的replace函數(shù),下面分享一下我的個人體會。
replace
用第三個表達式替換第一個字符串表達式中出現(xiàn)的所有第二個給定字符串表達式。
語法
replace ( ''string_replace1'' , ''string_replace2'' , ''string_replace3'' )
參數(shù)
''string_replace1''
待搜索的字符串表達式。string_replace1 可以是字符數(shù)據(jù)或二進制數(shù)據(jù)。
''string_replace2''
待查找的字符串表達式。string_replace2 可以是字符數(shù)據(jù)或二進制數(shù)據(jù)。
''string_replace3''
替換用的字符串表達式。string_replace3 可以是字符數(shù)據(jù)或二進制數(shù)據(jù)。
返回類型
如果 string_replace(1、2 或 3)是支持的字符數(shù)據(jù)類型之一,則返回字符數(shù)據(jù)。
如果 string_replace(1、2 或 3)是支持的 binary 數(shù)據(jù)類型之一,則返回二進制數(shù)據(jù)。
示例
下例用 xxx 替換 abcdefghi 中的字符串 cde.
select replace(''abcdefghicde'',''cde'',''xxx'')go
下面是結(jié)果集:
------------abxxxfghixxx(1 row(s) affected)
那么如何直接對數(shù)據(jù)進行修改呢?
首頁,我們要實現(xiàn)的是對表中存儲的數(shù)據(jù)進行修改,那么一定會有 update,其次,我們需要把我們的數(shù)據(jù)進行替換,那么一定會有 replace.
得出的sql語句如下:
update [info] set [educational] =(select replace(replace([educational],'[',''),']',''))
執(zhí)行以上的sql語句,就會把表中存儲的數(shù)據(jù)全部從json數(shù)組變?yōu)閖son字符串了。
更多信息請查看IT技術(shù)專欄