TL; DR如何在选择行时测试字符串是否为十六进制?如何检查VARCHAR字符串是不是十六进制?
如果我有GUID的其中有些是Base36,而不是如果十六进制的表:
ID | GUID
===|=================================
1 | CAFEBABECAFED00DB16B00B515BADA55
2 |ABCDEFGHIJKLMNOPQRSTUV
3 | DEADBEAF4D15EA5EDEFEC8EDFEE1DEAD
我想与那些不完全十六进制GUID的所有行。
对于一个单身人士,我可以尝试CONVERT(VARBINARY(32),[GUID],2)
,看看它是否失败,但我不能在查询中。如果我可以查询WHERE isNaN(parseInt(GUID,16))
,它将是自动安全的(同时必须应用于所有行)。
当然我可以为以下F(WHERE [GUID] LIKE '%g%' OR [GUID] LIKE '%h%' OR …
),但这种不得已样的办法信件全文搜索导致我问这个问题:
如何查询(非)十六进制只有字段?
是使用一个CTE对实际想法有重要意义? – dakab
@dakab CTE在这里填充一些数据。 –