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在這裏填充一些數據。 –