我見過類似的查詢,其中使用字符串或字符值來搜索整個數據庫。這些查詢不返回位於BINARY(8)字段中的結果。我試圖修改這些查詢無濟於事。SQL搜索二進制值
有沒有辦法在整個數據庫中搜索特定的二進制值,比如0x0000000000000017?
謝謝你們。
我見過類似的查詢,其中使用字符串或字符值來搜索整個數據庫。這些查詢不返回位於BINARY(8)字段中的結果。我試圖修改這些查詢無濟於事。SQL搜索二進制值
有沒有辦法在整個數據庫中搜索特定的二進制值,比如0x0000000000000017?
謝謝你們。
您可以使用系統表來找到它。
MSSQL:
SELECT t.name AS table_name,
c.name AS column_name,
ty.name
FROM sys.tables AS t
INNER JOIN sys.columns c
ON t.OBJECT_ID = c.OBJECT_ID
INNER JOIN sys.types ty
ON t.schema_id = ty.schema_id
WHERE ty.system_type_id = 173
ORACLE:
SELECT owner,table_name, column_name,data_TYPE
FROM all_tab_columns where data_TYPE = 'RAW';
嗯......
select *
from foo
where foo.binary8column = 0x0000000000000017
應該做的。如果要列舉所有的表格,並找到所有的binary
或varbinary
列,此查詢
select table_name = object_schema_name(tn.object_id) + '.' + tn.name ,
column_name = c.name ,
type = t.name + '(' + convert(varchar,c.max_length) + ')'
from sys.types t
join sys.columns c on c.system_type_id = t.system_type_id
join sys.tables tn on tn.object_id = c.object_id
where t.name in ('binary', 'varbinary')
and c.max_length >= 8
應給予足夠的信息來生成每一個這樣的表查詢。
謝謝,這會返回所有具有二進制(8)類型的表/列。我希望能夠在該類型的所有表/列中搜索特定值。說,搜索database_name爲0x000123asd,並有一個返回,告訴我在整個數據庫中發生值的位置。 我會繼續玩,感謝你的開始! – smedley89
http://stackoverflow.com/questions/16188257/querying-binary-column-using-like-in-sql-server是一個類似的問題與體面的答案 – zedfoxus
我不明白你在問什麼。你想搜索整個數據庫(因此每個表的每個字段)或二進制(8)字段? –
我會很高興找到二進制(8)字段,但每個表都在數據庫中具有該類型。目前爲止我所見過的查詢只搜索文本。 – smedley89