背景
我的ID号码有一个sql DB。它们看起来像“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
但现在数据有所改变,人们正在加入像这样的“251& r = 1328129429”。
如何轻松快速地区分“44b1e3d6e8ee4da7”和“251& r = 1328129429”之间的区别?我知道它们都是16个字符。我知道第二个字符串有&和a =,但我不想使用额外的AND!CONTAINS“& or =”除非我必须这样做。
有什么建议吗?
更新至问题:
正如@gbn所说我原来的问题没有得到回答。这是因为这只是一个部分问题。当时我完全不知道我在问什么。我的问题已经变成“如何从我的结果池中删除其中包含特殊字符的字符串,只留下16位十六进制字符串。
@MartinSmith提供了一个很好的代码示例来回答这个问题。感谢@MartinSmith在我的问题中查看真正的问题并回答它。它显示了大量的线性思维,我赞赏你的努力和答案。谢谢。
答案 0 :(得分:2)
要查找“16个字符长且为十六进制格式”的字符串,您可以使用
WHERE id LIKE REPLICATE('[0-9A-Fa-f]',16)