第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在SQL Server中轉(zhuǎn)義字符串,以便可以在LIKE表達(dá)式中安全使用

在SQL Server中轉(zhuǎn)義字符串,以便可以在LIKE表達(dá)式中安全使用

嗶嗶one 2019-10-09 16:23:02
如何在SQL Server的存儲過程中轉(zhuǎn)義字符串,以便可以在LIKE表達(dá)式中安全使用。假設(shè)我有一個NVARCHAR像這樣的變量:declare @myString NVARCHAR(100);我想在LIKE表達(dá)式中使用它:... WHERE ... LIKE '%' + @myString + '%';如何在T-SQL中轉(zhuǎn)義字符串(更具體地說,是對LIKE模式匹配有意義的字符,例如%或?),以便以這種方式安全使用?例如,給定:@myString = 'aa%bb'我想要:WHERE ... LIKE '%' + @somehowEscapedMyString + '%'匹配'aa%bb','caa%bbc'但沒有'aaxbb'或'caaxbb'。
查看完整描述

3 回答

?
哆啦的時光機

TA貢獻(xiàn)1779條經(jīng)驗 獲得超6個贊

要在LIKE表達(dá)式中轉(zhuǎn)義特殊字符,請在其前面加上轉(zhuǎn)義字符。您可以選擇與ESCAPE關(guān)鍵字一起使用的轉(zhuǎn)義字符。(MSDN參考)


例如,使用\作為轉(zhuǎn)義字符,可以轉(zhuǎn)義%符號:


select * from table where myfield like '%15\% off%' ESCAPE '\'

如果您不知道字符串中將包含哪些字符,并且不想將其視為通配符,則可以在所有通配符前面加上轉(zhuǎn)義字符,例如:


set @myString = replace( 

                replace( 

                replace( 

                replace( @myString

                ,    '\', '\\' )

                ,    '%', '\%' )

                ,    '_', '\_' )

                ,    '[', '\[' )

(請注意,您也必須轉(zhuǎn)義轉(zhuǎn)義字符,并確保這是內(nèi)部字符,replace以免轉(zhuǎn)義從其他replace語句添加的轉(zhuǎn)義字符)。然后,您可以使用以下內(nèi)容:


select * from table where myfield like '%' + @myString + '%' ESCAPE '\'

還要記住為@myString變量分配更多的空間,因為隨著字符串替換它會變長。


查看完整回答
反對 回復(fù) 2019-10-09
?
幕布斯6054654

TA貢獻(xiàn)1876條經(jīng)驗 獲得超7個贊

遇到類似的問題(使用NHibernate,因此ESCAPE關(guān)鍵字將非常困難),并使用方括號字符解決了該問題。所以你的樣本會變成


WHERE ... LIKE '%aa[%]bb%'

如果您需要證明:


create table test (field nvarchar(100))

go

insert test values ('abcdef%hijklm')

insert test values ('abcdefghijklm')

go

select * from test where field like 'abcdef[%]hijklm'

go


查看完整回答
反對 回復(fù) 2019-10-09
?
明月笑刀無情

TA貢獻(xiàn)1828條經(jīng)驗 獲得超4個贊

假設(shè)您在模式中使用了前導(dǎo)通配符,則與其轉(zhuǎn)義在模式語法中具有特殊意義的字符串中的所有字符,不如將它更快,更容易地完成。


SELECT * 

FROM YourTable

WHERE CHARINDEX(@myString , YourColumn) > 0

如果您不使用前導(dǎo)通配符,則應(yīng)避免使用上述方法,因為它不能在上使用索引YourColumn。


此外在情況下,最佳的執(zhí)行計劃將根據(jù)使用時的估計可能是更好的匹配的行的數(shù)目而變化LIKE與方形支架相比時逸出語法兩者CHARINDEX和所述ESCAPE關(guān)鍵字。


查看完整回答
反對 回復(fù) 2019-10-09
  • 3 回答
  • 0 關(guān)注
  • 707 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號