簡體   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