我有一张表格,其中包含所有有效域名的白名单。相关列称为" URL"
URL列是VARCHAR(60),@ url是.Net字符串原语。
我想要一个返回" 1"的SQL语句。如果提供的SQL参数以我存储在桌面上的白名单URL开头。这就是我所拥有的:
SELECT 1
FROM [TABLE]
WHERE @url LIKE (URL || '%')
但它不起作用并发出以下错误:
LIKE谓词或POSSTR标量函数无效,因为第一个操作数不是字符串表达式,或者第二个操作数不是字符串。
我想要发生的一个例子是,当给出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/
答案 0 :(得分:2)
怎么样:
IO_extract <- data.frame()
for (i in 4:7) {
FL_SEG <- substr(AUDIT[i], 2, 8)
ACC_NO <- substr(AUDIT[i], 11, 25)
SEC_ID <- substr(AUDIT[i], 28, 35)
DATE <- substr(AUDIT[i], 54, 61)
TIME <- substr(AUDIT[i], 63, 70)
TASK <- substr(AUDIT[i], 72, 79)
SCREEN <- substr(AUDIT[i], 81, 86)
ACTION <- substr(AUDIT[i], 88, 93)
A_NUMB <- substr(AUDIT[i], 95, 101)
output <- t(as.matrix(c(FL_SEG, ACC_NO, SEC_ID, DATE, TIME, TASK, SCREEN, ACTION, A_NUMB)))
colnames(output) <- c("FL_SEG", "ACC_NO", "SEC_ID", "DATE", "TIME", "TASK", "SCREEN", "ACTION", "A_NUMB")
IO_extract <- rbind(IO_extract, output)
}
或
SELECT 1
FROM table
WHERE LEFT(URL, LENGTH(@url)) = @url;
修改强>
根据您的数据类型,我建议使用强制转换:
SELECT 1
FROM table
WHERE LOCATE(URL, @url,1) = 1;
从海报编辑:
上述解决方案的组合解决了我的问题,我将发布我在下面使用的SQL:
CAST(URL AS VARCHAR(100)) -- instead of URL
CAST(@url AS VARCHAR(100)) -- instead of @url