Сравнение шестнадцатеричной строки SQL - PullRequest
2 голосов
/ 02 февраля 2012

Справочная информация:

У меня есть база данных sql для моих идентификационных номеров.Они выглядят как "44b1e3d6e8ee4da7", и до этого момента я был в состоянии обнаружить их на основе разностного запроса.

query:

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! СОДЕРЖИТ "& или =", если мне не нужно.

какие-либо предложения?

обновите вопрос:

, поскольку @gbn заявил, что на мой первоначальный вопрос не было ответа.Это потому, что это был только частичный вопрос.Я не знал в то время полностью, что я спрашивал.Мой вопрос превратился в «как удалить из моего пула результатов, в котором есть специальные символы, и оставить только 16-значные шестнадцатеричные строки.

@ MartinSmith предоставил отличный пример кода, который отвечает на этот вопрос. СпасибоВы @MartinSmith за то, что просматриваете мой вопрос, чтобы узнать, что это был за реальный вопрос, и отвечаете на него. Это показывает большое линейное мышление, и я приветствую ваши усилия и ответ. Спасибо.

1 Ответ

2 голосов
/ 02 февраля 2012

Чтобы найти строки «длиной 16 символов и шестнадцатеричный формат», вы можете использовать

WHERE id LIKE REPLICATE('[0-9A-Fa-f]',16)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...