gpt4 book ai didi

SQL 参数与白名单列值比较

转载 作者:行者123 更新时间:2023-12-02 01:08:31 26 4
gpt4 key购买 nike

我有一个表,其中包含所有有效域的白名单。有问题的列称为“URL”

URL 列是 VARCHAR(60),@url 是 .Net 字符串原语。

如果提供的 SQL 参数我存储在我的表中的白名单 URL,我想要一个返回“1”的 SQL 语句。这是我的:

SELECT  1
FROM [TABLE]
WHERE @url LIKE (URL || '%')

但它不起作用并给出以下错误:

A LIKE predicate or POSSTR scalar function is not valid because the first operand is not a string expression or the second operand is not a string.

我想要发生的事情的一个例子是当给定参数值 HTTP://WWW.GOOGLE.COM/ANYTHING/AFTER/THIS 并且我的表上有一行看起来像 HTTP://WWW.GOOGLE.COM 它将返回“1”,但如果没有以域开头的行则返回 null。

示例表值:

HTTP://WWW.GOOGLE.COM
HTTPS://WWW.ANOTHERWEBSITE.GOV
HTTP://WWW.DOMAIN.CORP
HTTP://MY.WEBSITE.COM
HTTPS://STUFF/SUBDOMAIN/
HTTP://BUSINESS.JUNK.CORP/

最佳答案

怎么样:

SELECT 1
FROM table
WHERE LEFT(URL, LENGTH(@url)) = @url;

SELECT 1
FROM table
WHERE LOCATE(URL, @url,1) = 1;

编辑:

根据您的数据类型,我建议使用强制转换:

CAST(URL AS VARCHAR(100))  -- instead of URL
CAST(@url AS VARCHAR(100)) -- instead of @url

根据海报编辑:

上述解决方案的组合解决了我的问题,我将在下面发布我使用的 SQL:

SELECT  1
FROM table
WHERE LOCATE(URL, CAST(@url AS VARCHAR(60)), 1) = 1

关于SQL 参数与白名单列值比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46450158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com