java string 实现like_SQL String match with Like

Im trying to validate a string with a like pattern, which only consists of the following characters and Im getting close to it but can still bypass my curernt expression:

valid characters: numbers 0-9, alphanumeric chars + . =

expression:

%[^[0-9A-Za-z+._-=]]% ESCAPE

But with that expression, also strings with square brackets and "-"-characters are counted as correct. If I swap the inner brackets to normal brackets like so

%[^(0-9A-Za-z+._-=)]% ESCAPE

I still have the same issue but this time with normal brackets. Test data Im toying with:

IF OBJECT_ID(TEMPDB..#temp) IS NOT NULL DROP TABLE #temp

CREATE TABLE #temp(

string varchar(max),

expectedResult varchar(max),

result varchar(max)

)

insert #temp(string,expectedResult)

values

(da)ssdas, invalid),

(DFGHJ§$%, invalid),

(+=8rt8//12=+, invalid),

([BIGBEAR], invalid),

(BIG-BEAR, invalid),

(x[BIGBEAR]x, invalid),

((BIGBEAR), invalid),

(+=8rt8Ahd12=+, valid)

update #temp

set result = CASE WHEN string like %[^[0-9A-Za-z+._-=]]% ESCAPE

THEN invalid

ELSEvalid

END

select * from #temp

result

string expectedResult result

da)ssdas invalid invalid

DFGHJ§$% invalid invalid

+=8rt8//12=+ invalid invalid

[BIGBEAR] invalid valid

BIG-BEAR invalid valid

x[BIGBEAR]x invalid valid

(BIGBEAR) invalid invalid

+=8rt8Ahd12=+ valid valid

Im trying to validate a string with a like pattern, which only consists of the following characters and Im getting close to it but can still bypass my curernt expression: valid characters: numbers 0-9, alphanumeric chars + . = expression: %[^[0-9A-Za-z+._-=]]% ESCAPE But with that expression, also strings with square brackets and "-"-characters are counted as correct. If I swap the inner brackets to normal brackets like so %[^(0-9A-Za-z+._-=)]% ESCAPE I still have the same issue but this time with normal brackets. Test data Im toying with: IF OBJECT_ID(TEMPDB..#temp) IS NOT NULL DROP TABLE #temp CREATE TABLE #temp( string varchar(max), expectedResult varchar(max), result varchar(max) ) insert #temp(string,expectedResult) values (da)ssdas, invalid), (DFGHJ§$%, invalid), (+=8rt8//12=+, invalid), ([BIGBEAR], invalid), (BIG-BEAR, invalid), (x[BIGBEAR]x, invalid), ((BIGBEAR), invalid), (+=8rt8Ahd12=+, valid) update #temp set result = CASE WHEN string like %[^[0-9A-Za-z+._-=]]% ESCAPE THEN invalid ELSEvalid END select * from #temp result string expectedResult result da)ssdas invalid invalid DFGHJ§$% invalid invalid +=8rt8//12=+ invalid invalid [BIGBEAR] invalid valid BIG-BEAR invalid valid x[BIGBEAR]x invalid valid (BIGBEAR) invalid invalid +=8rt8Ahd12=+ valid valid
经验分享 程序员 微信小程序 职场和发展