Sql-Server

使用帶撇號的 LIKE

  • August 12, 2016

我一直在執行伺服器端跟踪,以了解如何在我的數據庫中呼叫特定的儲存過程。

我正在執行以下查詢以從生成的跟踪文件中獲取數據:

select TextData,
db_name(databaseid)
from fn_trace_gettable( 'R:\Profiler\udpProductTaxRateGet4.trc', default) fn
join sys.trace_events te
on fn.EventClass = te.trace_event_id
where --
1=1
--and EventClass = 42
and textdata like '%udpProductBulletPointSelectByTier1NoteTypeCode%'
--and db_name(databaseid) = 'US16AUTPProduct'
order by starttime desc

但是如下圖所示,像這樣的行太多了:

declare @p5 int  set @p5=86400 exec dbo.udpProductBulletPointSelectByTier1NoteTypeCode @Tier1=N'AR763',@LanguageID=2,@SeasonItemID=N'16AUT',@ListNoteTypeCode=N'',@CacheDuration=@p5 output  select @p5

在此處輸入圖像描述

更具體地說,該過程是使用空參數值呼叫的@ListNoveTypeCode

@ListNoteTypeCode=N''

如何過濾掉所有@ListNoteTypeCode=N’‘的行??

單引號字元沒有特殊意義LIKE

您需要將它們加倍以在任何字元串文字中轉義它們。

因此,您嘗試不匹配的字元串中的兩個連續單引號變為如下四個。

And textdata not like '%@ListNoteTypeCode=N''''%'

從圖像上看,BulletPoint 似乎也是您需要尋找的。將 Like 語句更改為 like ‘%udpProductBulletPointSelectByTier1NoteTypeCode%BulletPoint%’

這應該會減少結果。

引用自:https://dba.stackexchange.com/questions/146651