【发布时间】:2012-03-23 13:40:27
【问题描述】:
我希望能够区分字母数字字符串和十六进制格式的字符串。
我目前的查询是:
<columnName> LIKE '?_____=' + REPLICATE('[0-9A-Fa-f]',16)
我发现了这种在线搜索十六进制 ID 的方法,我认为它有效。但是,在获得更大的样本量后,我可以在结果中看到很高的误报率。问题是这给了我我想要的所有结果,但它也给了我一堆我不关心的结果。例如:
我想看看:
<url>.php?mains=d7ad916d1c0396ff
但我不想看到:
<url>.php?mblID=2007012422060265
这两个字符串之间的区别在于我要收集的末尾的 16 个字符都是数字而不是十六进制 ID。你们使用哪些方法将结果限制为仅十六进制 ID?提前致谢。
更新: Juergen 提出了一个很好的观点,第二个数字可以是一个十六进制值。并非所有十六进制数字都包含 [a-F]。我想重新表述这个问题,说明我正在寻找一个包含字母和数字的 ID,而不仅仅是数字。
【问题讨论】:
-
但第二个数字可能是一个十六进制值。并非所有十六进制数字都包含 [a-F]
-
@juergend 这是一个很好的观点。我将重新表述这个问题,说明我正在寻找一个包含字母和数字的 ID,而不仅仅是数字。
-
如果没有存储任何关于它是什么基数的额外信息,您不可能确定一个字符串是代表十六进制还是十进制。如果你有一个包含
12345678的字符串,比如说,你怎么知道它是十进制还是十六进制?
标签: sql sql-server hex alphanumeric