對於領先的前綴LIKE比較,gbn的答案是可以的。對於真正 LIKE的字符串搜索對等,你可以像使用如下:
(從@gbn借貸模式和樣本數據)
DECLARE @foo TABLE (TestData varbinary(100) NOT NULL);
INSERT @foo (TestData) VALUES
(0x0001DC780C0030373156635D0C00B8),
(0x0001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA),
(0x0001AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF),
(0x0301DC780C0030373156385D0C006499C401009A0600AC),
(0x0301FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF),
(0x0302000000000000000000000000000000000000000000);
SELECT *
FROM @foo
WHERE CAST(TestData AS VARCHAR(MAX)) LIKE '%'+CAST(0xDC78 AS VARCHAR(MAX))+'%';
當你施放一個二進制值VARCHAR,所有這將原始位視爲字符串流。它不會神奇地將其轉換爲字符串表示形式。考慮下面的例子:
select cast(0x41 as varchar(10)); -- Result: A
select cast(0x414263 as varchar(10)); -- Result: ABc
由於字節的0x41或序號65是在標準的拉丁代碼頁「A」。
你的兩個查詢是完全一樣的嗎?此外,我添加了更多解釋和代碼來做一個雙面通配符LIKE的答案。 – RichardTheKiwi 2013-04-24 10:04:56