Чтобы проверить строчные буквы, вы можете использовать двоичное сопоставление, например Latin1_General_BIN
.
Эта процедура SQL Server проверяет, содержит ли строка только пробелы, цифры или строчные буквы.Если это так, он возвращает 1 и заменяет пробелы подчеркиванием.В противном случае возвращается -1.
if OBJECT_ID('TestProc') is null
exec ('create procedure TestProc as select 1')
go
alter procedure TestProc(
@str varchar(256),
@result varchar(256) output)
as
begin
set @result = null
set @str = REPLACE(@str,' ','_')
if @str like '%[^0-9a-z_]%' collate Latin1_General_BIN
return -1
set @result = @str
return 1
end
go
Тестовые данные:
declare @rc int
declare @result varchar(256)
exec @rc = TestProc '11 aa', @result out
select @rc, @result
exec @rc = TestProc 'NO CAPS', @result out
select @rc, @result
exec @rc = TestProc '%#$#$', @result out
select @rc, @result
->
1 11_aa
-1 NULL
-1 NULL