检查字符串是否包含大写字符的函数?

Ayy*_*yub 1 sql-function sql-server-2014

我需要创建一个 SQL Server 函数来检查输入字符串是否包含任何大写字符。如果是,那么它应该返回“OK”。如果不是,则应返回“NOT OKAY”。

当执行以下语句时,它应该返回预期值,如下所示。

PRINT dbo.CheckStringOfUpperAlphaOK('abc') -- Expected: "NOT OK"
PRINT dbo.CheckStringOfUpperAlphaOK('ABC') -- Expected: "OK"
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的,但我不知道如上所述指定返回值。

CREATE FUNCTION CheckStringOfUpperAlphaOK (@String varchar(MAX))
RETURNS VARCHAR(6)
AS
BEGIN
Declare @KeepValues as varchar(50)
Set @KeepValues = '%[^ ][A-Z]%'

While PatIndex(@KeepValues collate Latin1_General_Bin, @Temp) > 0
    Set @Temp = Stuff(@Temp, PatIndex(@KeepValues collate   
  Latin1_General_Bin, @Temp) + 1, 0, ' ')

RETURN @Temp
Run Code Online (Sandbox Code Playgroud)

结尾

mar*_*c_s 5

这个怎么样?我只是简单地将@String参数与检查大写字符的(简化)模式进行比较 - 并根据该索引,我定义返回值并返回适当的响应:

CREATE FUNCTION CheckStringOfUpperAlphaOK(@String varchar(MAX))
RETURNS VARCHAR(6)
AS
BEGIN
    DECLARE @UpperCasePos BIGINT

    SELECT @UpperCasePos = PATINDEX('%[A-Z]%' collate Latin1_General_Bin, @String)

    DECLARE @Response VARCHAR(6)

    IF @UpperCasePos > 0
        SET @Response = 'OK'
    ELSE
        SET @Response = 'NOT OK'

    RETURN @Response
END
Run Code Online (Sandbox Code Playgroud)