在python的SQL查询中以VARCHAR()数据类型传递整数
我正在使用的数据库(WRDS)主要使用web表单进行查询,因此,尽管是整数,数据库中的主键仍存储为VARCHAR(6) 我的问题是这样的-在python的SQL查询中以VARCHAR()数据类型传递整数,python,sql,sqldatatypes,Python,Sql,Sqldatatypes,我正在使用的数据库(WRDS)主要使用web表单进行查询,因此,尽管是整数,数据库中的主键仍存储为VARCHAR(6) 我的问题是这样的- 从公司第二部分选择gvkey,其中gvkey输入(1214212141121381300212635128503144) 由于此查询只是传递给python中函数的字符串,因此我无法控制键列表的数据类型,因此它们被读取为数字。这意味着我的查询没有找到任何匹配项 如果可能的话,我希望能够从查询中指定varchar(6)数据类型。我试过了 cast((12142
从公司第二部分选择gvkey,其中gvkey输入(1214212141121381300212635128503144)代码>
由于此查询只是传递给python中函数的字符串,因此我无法控制键列表的数据类型,因此它们被读取为数字。这意味着我的查询没有找到任何匹配项
如果可能的话,我希望能够从查询中指定varchar(6)数据类型。我试过了
cast((12142, 12141, 12138, 1300, 1722, 12635, 12850, 3144) as varchar(6)
及
到目前为止,我还没有取得任何成功。我在WRDS客户支持方面的成功率甚至更低。如果有我所缺少的解决方案,我会欣喜若狂地找到它
干杯为什么不反其道而行之,将inside-IN子句类型指定为VARCHAR?。试试看:
select gvkey from comp.sec_dprc where gvkey
in ('12142', '12141', '12138', '1300', '1722', '12635', '12850', '3144')
如果知道值是数字,则将列转换为数字:
where cast(gvkey as int) in (12142, 12141, 12138, 1300, 1722, 12635, 12850, 3144)
语法和最佳方法可能因数据库而异,但想法是相同的
注意:如果您错误地认为内容仅为数字,则可能会出现转换错误。请使用您正在使用的数据库标记您的问题。还可以显示表中的数据。这是一个很好的想法,但由于某些原因,这不起作用。。。这是我第一次尝试的事情之一
where cast(gvkey as int) in (12142, 12141, 12138, 1300, 1722, 12635, 12850, 3144)