2012-02-02 70 views
2

背景:SQL十六進制字符串比較

我有我的ID號的SQL數據庫。它們看起來像「44b1e3d6e8ee4da7」,到目前爲止,我已經能夠基於差異查詢來檢測它們。

查詢:

use [table] 
select date,id 
from View 
with(nolock) where id like '________________' 
and DIFFERENCE(substring(id,charindex('?____=', id)+6, 
(len(id) - (charindex('?____=', id) +5))), 'ae93ed317663c028') > 0 

但現在的數據已經有所改變,人們在ID的這樣的 「251 & R = 1328129429」 推杆。

如何輕鬆快速地區分「44b1e3d6e8ee4da7」和「251 & r = 1328129429」之間的區別?我知道他們都是16個字符。我知道第二個字符串有一個&和a =,但是我不想使用額外的AND!CONTAINS「&或=」,除非必須。

有什麼建議嗎?

更新問題:

爲@gbn說是沒有回答我原來的問題。這是因爲這只是一個部分問題。當時我完全不知道我在問什麼。我的問題已演變爲「我如何從我的結果池字符串中刪除具有特殊字符的字符串,並僅保留16位十六進制字符串

@MartinSmith提供了一個很好的代碼示例來回答這個問題謝謝@ MartinSmith爲了查看我的問題到什麼是真正的問題並回答了它,它顯示了大量的線性思維,我讚揚你的努力和回答,謝謝

+1

簡單的'valueA <> valueB'有什麼問題?ID號碼匹配或者他們不...中間沒有多少... – gbn 2012-02-02 15:21:15

+0

我必須爲新ID輸入報告。我知道它們都是16個字符,並且是一個十六進制格式,沒有特殊字符。 – toosweetnitemare 2012-02-02 15:22:41

+0

你能詳細說明你的意思嗎?「一個簡單的valueA」> valueB「? – toosweetnitemare 2012-02-02 15:23:22

回答

2

要查找長度爲16個字符的字符串十六進制格式「可以使用

WHERE id LIKE REPLICATE('[0-9A-Fa-f]',16) 
+0

讓我去試試看吧。謝謝馬丁! – toosweetnitemare 2012-02-02 15:28:17

+0

糟糕的問題。你沒有回答「我如何輕鬆快速地區分」44b1e3d6e8ee4da7「和」251&r = 1328129429「之間的區別?」... – gbn 2012-02-02 15:30:40

+0

你可以修改它來查看像這樣的字符串的最後16個字符「imps。 PHP?SGMS = 248&R = 1328084992" ?我想我可能已經爲你的方法找到了第二個用法:) – toosweetnitemare 2012-02-02 15:33:25

相關問題