SQL LIKE 语句适用于特定字符之前的所有内容
SQL LIKE Statment that applies on everything up to a certain character
我的数据库包含 "website" 的列,其中包含以下数据:
foo1.web.com
foo2.gov
doo3.shoo.net
baa.com
baa2.shoo.com
我想做一个 select 语句来获取变量之类的所有内容,但仅限于第一个句点,我想忽略句点之后的所有内容:
DELCARE @variable varchar(MAX);
SET @variable = 'oo';
SELECT * WHERE website LIKE '%' + @variable + '%' --(but only apply like statement up to the first .)
所以我会得到的是:
foo1.web.com
foo2.gov
doo3.shoo.net
但它会遗漏
baa2.shoo.com
提前感谢您的帮助!
编辑:
使用 SQL 服务器
对于 SQL 服务器,您只能查看 oo
的 URL 的左侧 N 个字符。您将通过使用 LEFT
和 CHARINDEX
找到第一个 .
来获得左边的 N 个字符
SELECT *
FROM @table
WHERE LEFT(val, CHARINDEX('.', val)) LIKE '%'+@variable+'%'
假设您搜索的列名为 site
,那么我相信您可以使用如下内容:
SELECT *
FROM website
WHERE `site` LIKE '%oo%' AND INSTR(`site`, 'oo')<INSTR(`site`, '.');
另一种选择
例子
Declare @YourTable Table ([website] varchar(50))
Insert Into @YourTable Values
('foo1.web.com')
,('foo2.gov')
,('doo3.shoo.net')
,('baa.com')
,('baa2.shoo.com')
DECLARE @variable varchar(MAX);
SET @variable = 'oo';
Select *
from @YourTable
where charindex('.',website+'.') > nullif(charindex(@variable,website),0)
Returns
website
foo1.web.com
foo2.gov
doo3.shoo.net
我的数据库包含 "website" 的列,其中包含以下数据:
foo1.web.com
foo2.gov
doo3.shoo.net
baa.com
baa2.shoo.com
我想做一个 select 语句来获取变量之类的所有内容,但仅限于第一个句点,我想忽略句点之后的所有内容:
DELCARE @variable varchar(MAX);
SET @variable = 'oo';
SELECT * WHERE website LIKE '%' + @variable + '%' --(but only apply like statement up to the first .)
所以我会得到的是:
foo1.web.com
foo2.gov
doo3.shoo.net
但它会遗漏
baa2.shoo.com
提前感谢您的帮助!
编辑: 使用 SQL 服务器
对于 SQL 服务器,您只能查看 oo
的 URL 的左侧 N 个字符。您将通过使用 LEFT
和 CHARINDEX
找到第一个 .
SELECT *
FROM @table
WHERE LEFT(val, CHARINDEX('.', val)) LIKE '%'+@variable+'%'
假设您搜索的列名为 site
,那么我相信您可以使用如下内容:
SELECT *
FROM website
WHERE `site` LIKE '%oo%' AND INSTR(`site`, 'oo')<INSTR(`site`, '.');
另一种选择
例子
Declare @YourTable Table ([website] varchar(50))
Insert Into @YourTable Values
('foo1.web.com')
,('foo2.gov')
,('doo3.shoo.net')
,('baa.com')
,('baa2.shoo.com')
DECLARE @variable varchar(MAX);
SET @variable = 'oo';
Select *
from @YourTable
where charindex('.',website+'.') > nullif(charindex(@variable,website),0)
Returns
website
foo1.web.com
foo2.gov
doo3.shoo.net