Db2 为什么我会得到“一个”;SQL0134N字符串列的不当使用…“;我的查询有错误吗?

Db2 为什么我会得到“一个”;SQL0134N字符串列的不当使用…“;我的查询有错误吗?,db2,jupyter,db2-luw,dashdb,Db2,Jupyter,Db2 Luw,Dashdb,我试图从Juptyter笔记本上的芝加哥犯罪数据表中获得“加油站位置记录的独特犯罪类型” %sql select DISTINCT PRIMARY_TYPE from CHICAGO_CRIME_DATA WHERE LOCATION_DESCRIPTION = 'GAS STATION'; PRIMARY\u TYPE和LOCATION\u DESCRIPTION是列名。 我在IBMDB2中操作。它正在产生一个错误 ibm_db_sa://ddk87262:**@dashdb-txn-sbo

我试图从Juptyter笔记本上的芝加哥犯罪数据表中获得“加油站位置记录的独特犯罪类型”

%sql select DISTINCT PRIMARY_TYPE from CHICAGO_CRIME_DATA WHERE LOCATION_DESCRIPTION = 'GAS STATION';
PRIMARY\u TYPE
LOCATION\u DESCRIPTION
是列名。 我在IBMDB2中操作。它正在产生一个错误

ibm_db_sa://ddk87262:**@dashdb-txn-sbox-yp-lon02-01.services.eu gb.bluemix.net:50000/BLUDB

(ibm_db_dbi.ProgrammingError)ibm_db_dbi::ProgrammingError:SQLNumResultCols失败:[ibm][CLI Driver][DB2/linux8664]SQL0134N字符串列、主机变量、常量或函数“PRIMARY_TYPE”使用不当。SQLSTATE=42907 SQLCODE=-134

[SQL:从芝加哥犯罪数据中选择不同的主要犯罪类型,其中位置描述='加油站';]

(此错误的背景信息位于:)

我仔细检查了列名。如果我不使用Distinct函数,代码将显示结果(带有冗余行)


什么会导致此错误?

检查主类型列的Db2列数据类型

如果您有访问权限,您可以在表的
syscat.columns
中查看主\u类型的列数据类型。您还可以使用
描述表CHICAGO\u CRIME\u DATA
createtable
语句也可以为显示Db2列数据类型的表编写文档

您可以看到该错误消息SQL0134N的详细信息

列数据类型可能是CLOB、DBCLOB、BLOB、LONG VARCHAR或LONG VARGRAPHIC中的一种,而DISTINCT不允许使用这些数据类型


您可以通过从列中提取一些字符(例如substr等)并强制转换为CHAR或VARCHAR,然后在此类型上使用distinct来解决此问题。

检查主类型列的Db2列数据类型

如果您有访问权限,您可以在表的
syscat.columns
中查看主\u类型的列数据类型。您还可以使用
描述表CHICAGO\u CRIME\u DATA
createtable
语句也可以为显示Db2列数据类型的表编写文档

您可以看到该错误消息SQL0134N的详细信息

列数据类型可能是CLOB、DBCLOB、BLOB、LONG VARCHAR或LONG VARGRAPHIC中的一种,而DISTINCT不允许使用这些数据类型

您可以通过从列中提取一些字符(例如substr等)并转换为CHAR或VARCHAR,然后在此类型上使用distinct来解决此问题