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