新聞中心
在應(yīng)用開發(fā)中,面對(duì)復(fù)雜的長(zhǎng)文本內(nèi)容,經(jīng)常運(yùn)用到存儲(chǔ)字符串的字段類,MySQL的長(zhǎng)字符類型有text,blob,其中SQL Server的等效長(zhǎng)字符類型則是varchar(MAX)和nvarchar(max),由于字符串本身的特殊性,面對(duì)最大長(zhǎng)度甚至未知的字段類型,把長(zhǎng)文本等數(shù)據(jù)放入關(guān)系數(shù)據(jù)庫(kù)中,必須有良好的技巧才能實(shí)現(xiàn)。在這里就以MSSQL為例介紹MSSQL操作長(zhǎng)字符串的最佳實(shí)踐。

創(chuàng)新互聯(lián)建站IDC提供業(yè)務(wù):綿陽(yáng)服務(wù)器托管,成都服務(wù)器租用,綿陽(yáng)服務(wù)器托管,重慶服務(wù)器租用等四川省內(nèi)主機(jī)托管與主機(jī)租用業(yè)務(wù);數(shù)據(jù)中心含:雙線機(jī)房,BGP機(jī)房,電信機(jī)房,移動(dòng)機(jī)房,聯(lián)通機(jī)房。
首先,應(yīng)該牢記長(zhǎng)字符串類型,分別是varchar(max)和nvarchar(max),text類型已經(jīng)被拋棄了,之前可能也有一些文章談?wù)撨^,但如今需要明確的是只有varchar(max)和nvarchar(max)才是最佳的選擇。
其次,當(dāng)前的字符串可能太長(zhǎng)以致無(wú)法直接插入數(shù)據(jù)庫(kù),此時(shí)需要使用變長(zhǎng)字符串操作,下面是一個(gè)用MSSQL固定變長(zhǎng)字符串截取指定長(zhǎng)度字符串的例子:
“`SQL
DECLARE @mystring VARCHAR(MAX)
SET @MyString=’This is a MSSQL string.’
DECLARE @MySubString VARCHAR(15)
SET @MySubString= SUBSTRING(@MyString, 0, 15)
SELECT @MySubString
此外,在處理長(zhǎng)字符串及其無(wú)限長(zhǎng)度內(nèi)容時(shí),最好有一個(gè)預(yù)先設(shè)定的長(zhǎng)度做為限制。這樣就可以保證每條記錄的字符串長(zhǎng)度不會(huì)超出范圍,可以使用MSSQL的LEN()函數(shù)來(lái)查看某一變量的長(zhǎng)度:
```SQL
DECLARE @MyString varchar(255)
SET @MyString='This is a MSSQL string.'
SELECT LEN(@MyString)
最后,不要忘了使用參數(shù)化查詢,這可以避免原始查詢中文本被定義為SQL字符串查詢成為SQL注入的可能性。所以在插入或者使用長(zhǎng)字符串操作時(shí),最好使用MSSQL的參數(shù)化查詢:
“`SQL
DECLARE @MyString varchar(255)
SET @MyString=’This is a MSSQL string.’
DECLARE @MyLength int
SET @MyLength=10
DECLARE @MySubString varchar(255)
SET @MySubString= SUBSTRING(@MyString,0,@MyLength)
SELECT @MySubString
總的來(lái)說,使用MSSQL操作長(zhǎng)字符串只要注意以上內(nèi)容,就可以輕松的進(jìn)行高性能的操作。此外,需要注意的是,如果內(nèi)容為未知長(zhǎng)度,請(qǐng)一定要使用varchar(max)或者nvarchar(max),以免出現(xiàn)數(shù)據(jù)丟失等問題。
成都服務(wù)器租用選創(chuàng)新互聯(lián),先試用再開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。物理服務(wù)器托管租用:四川成都、綿陽(yáng)、重慶、貴陽(yáng)機(jī)房服務(wù)器托管租用。
文章名稱:串征服MSSQL中長(zhǎng)字符串之路(mssql長(zhǎng)字符)
標(biāo)題URL:http://m.fisionsoft.com.cn/article/dpgidcg.html


咨詢
建站咨詢
