질문 :SQL : 문자열이 MD5 해시인지 비교해보십시오.
SQL에서 문자열이 MD5 해시 인 경우 COMPARE해야합니다.
I이 PHP 함수 발견:로
IF '200ceb26807d6bf99fd6f4f0d1ca54d4' LIKE '[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]'
BEGIN
PRINT 'YES'
END
ELSE
BEGIN
PRINT 'NO'
END
그러나 : SQL은 {32} 문법 부족 때문에
가function isValidMd5($md5)
{
return !empty($md5) && preg_match('/^[a-f0-9]{32}$/', $md5);
}
, I는 단지 복제 [A-f0-9] 32 회 32 [af]로 구성된 사용자 이름과 가능한 충돌을 피하십시오. 그러나 나는 대문자와 같은 비교를하고 싶습니다.
그러나 테스트를 위해 내가 할 경우 :IF 'E' COLLATE Latin1_General_CS_AS LIKE ('[a-f0-9]' COLLATE Latin1_General_CS_AS)
BEGIN
PRINT 'yes'
END
ELSE
BEGIN
PRINT 'no'
END
내가 네 얻을, 그리고 더.
그러나 COLLATE Latin1_General_CS_AS는 대소 문자를 구분해야합니다 ...
이 IF에서 LIKE를 어떻게 만들 수 있습니까?
^의 의미는 무엇입니까? 이것은 내 SQL 서버에서 작동하지 않기 때문에 ... –
반전 (즉, * 0-9a-f가 아닌 모든 문자와 일치). 예를 들어 'z'와 일치합니다. 또한 LIKE 패턴은 약간의 조정이 필요 했으므로 이제 막 답변을 편집했습니다. 이제 '%'일치로 묶었습니다. –
아, 이제 알겠습니다. 죄송합니다, 내 잘못, 나는 if에서 변경된 스위칭을 보지 못했습니다. 그렇습니다. 타이피스트 관점에서 볼 때, 더 똑똑합니다. 하지만 여전히이 게시물의 핵심은 대소 문자를 구분하는 문제가 있습니다. –