将整数作为VARCHAR()数据类型在python的SQL查询中传递

问题描述 投票:0回答:2

我正在使用的数据库(WRDS)主要使用Web表单进行查询,因此,尽管是整数,数据库中的主键仍存储为VARCHAR(6)。

enter image description here

我的查询看起来像这样-select gvkey from comp.sec_dprc where gvkey in (12142, 12141, 12138, 1300, 1722, 12635, 12850, 3144);

由于此查询只是传递给python中的函数的字符串,所以我无法控制键列表的数据类型,因此它们被读取为数字。这意味着我的查询找不到任何匹配项。

我希望能够从查询中指定varchar(6)数据类型。我尝试过;

cast((12142, 12141, 12138, 1300, 1722, 12635, 12850, 3144) as varchar(6) 

(cast(12142 as varchar(6), cast(12141as varchar(6), cast(12138 as varchar(6), etc)

到目前为止,我还没有取得任何成功。我在WRDS客户支持方面取得的成功甚至更少。如果有我不知道的解决方案,我将为之欣喜若狂。

欢呼声

python sql sqldatatypes
2个回答
1
投票

如果您知道值是数字,则将column转换为数字:

where cast(gvkey as int) in (12142, 12141, 12138, 1300, 1722, 12635, 12850, 3144)

语法和最佳方法可能因数据库而异,但是思想是相同的。

注意:如果您对仅数字内容的输入有误,则会出现转换错误。


0
投票

为什么不采取相反的方式,并在IN子句类型内部指定为VARCHAR?尝试像:

select gvkey from comp.sec_dprc where gvkey 
in ('12142', '12141', '12138', '1300', '1722', '12635', '12850', '3144')
© www.soinside.com 2019 - 2024. All rights reserved.