与子字符串匹配的postgresql
postgresql matching with substring
使用 python pstcopg2
我想做一个类似
的数据框
df = sql.read_sql("""SELECT objects.sampleid, MAX(objects.projid) AS projid,
MAX(samples.t01) AS hdrfilename, MAX(samples.t06) AS ctdfilename,
MAX(objects.objdate) || ' ' || MAX(objects.objtime) AS objdatetime,
MAX(objects.latitude) AS latitude, MAX(objects.longitude) AS longitude,
MAX(objects.orig_id) AS orig_id
FROM samples, objects
WHERE objects.projid in (%s) and objects.orig_id LIKE '%samples.orig_id%'
GROUP BY objects.sampleid"""%(projid_list), mydb)
但是出现错误信息
GROUP BY objects.sampleid"""%(projid_list), mydb)
TypeError: not enough arguments for format string
我想主要问题出在这一行,
objects.orig_id LIKE '%samples.orig_id%'
如果我使用
应用代码
objects.orig_id = samples.orig_id
它有效,但这不是我想要的。
我想如果 objects.orig_id 包含 samples.orig_id,我得到数据。
如何更正上面的代码??
您可以通过 %%
.
转义 %
像这样的东西应该可以工作:
LIKE '%%samples.orig_id%%'
使用 python pstcopg2
我想做一个类似
的数据框df = sql.read_sql("""SELECT objects.sampleid, MAX(objects.projid) AS projid,
MAX(samples.t01) AS hdrfilename, MAX(samples.t06) AS ctdfilename,
MAX(objects.objdate) || ' ' || MAX(objects.objtime) AS objdatetime,
MAX(objects.latitude) AS latitude, MAX(objects.longitude) AS longitude,
MAX(objects.orig_id) AS orig_id
FROM samples, objects
WHERE objects.projid in (%s) and objects.orig_id LIKE '%samples.orig_id%'
GROUP BY objects.sampleid"""%(projid_list), mydb)
但是出现错误信息
GROUP BY objects.sampleid"""%(projid_list), mydb)
TypeError: not enough arguments for format string
我想主要问题出在这一行,
objects.orig_id LIKE '%samples.orig_id%'
如果我使用
应用代码objects.orig_id = samples.orig_id
它有效,但这不是我想要的。 我想如果 objects.orig_id 包含 samples.orig_id,我得到数据。
如何更正上面的代码??
您可以通过 %%
.
%
像这样的东西应该可以工作:
LIKE '%%samples.orig_id%%'