[英]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.