繁体   English   中英

sql仅在字符串的一部分中搜索

[英]sql search in only parts of a string

我在数据库中有一个用逗号分隔的名称列表,称为所有者(有时有一个所有者,有时会有多个所有者...如果名称多于1,则用逗号分隔)。 我想查找某个名称是否显示为所有者字段中的名字。 因此,我需要使用sql中的like命令来搜索模式,但是我需要将其限制在第一个逗号之前的部分。 请注意,我要输入

约翰·多伊,卡特琳

如果我的模式是“ John”,则会被发现。 那有可能吗? 我在sqlalchemy中寻找解决方案,但是如果在sql中有解决方案,我可以确定自己可以找到sqlalchemy版本。 谢谢卡尔

在SQL Server中,您可以执行以下操作:

select colname
where substring(lower(colname), 1, charindex(',',lower(colname))-1) like '%john%'

您可以在Oracle中做与

select colname
where substr(lower(colname), 1, instr(lower(colname),',')-1) like '%john%'

如您所见,这些功能特定于数据库。

您可以直接使用LIKE作为字符串的开头。 %匹配任何内容。 这是在sqlalchemy

session.query(Object).filter(Object.column.like('THENAME,%'))

如果您只想将“ Jon Doe”与“ Jon”进行匹配,则需要使用正则表达式

session.query(Object).filter(Object.column.op('regexp')('r^Jon[^,]*,'))

这将匹配以Jon开头的^ ,后跟任意数量的non , char [^,]*后跟,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM