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 个字符。您将通过使用 LEFTCHARINDEX 找到第一个 .

来获得左边的 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