我有一个包含列的表:
import org.springframework.web.servlet.i18n.SessionLocaleResolver
beans = {
localeResolver(SessionLocaleResolver) {
defaultLocale= new java.util.Locale("en","GB")
}
}
我正在做一个选择,其中txntype的值等于9:
txntype (tinyint, not null)
但是引发了错误:
结果空间不足,无法将uniqueidentifier值转换为char。
我也尝试过:
where CAST(txntype as varchar(3)) = '9'
但执行查询时未选择任何记录。有什么想法吗?
答案 0 :(得分:1)
是否可以添加该表的create语句和整个select语句,因为它似乎已将该列声明为uniqueidentifier列,或者您的select正在使用另一列的值而不是您正在使用的列在你的where子句中。
此外,ISNUMERIC() function返回一个位(0或1),指示值是否实际可以转换为数值数据类型。将其与值9进行比较将始终产生" false"对于那段where子句。
如果列实际上是数字类型,则无论如何都不必在where子句中强制转换值。
where [txntype] = 9
如果列真的是一个tinyint就足够了。这也是您需要查看查询的其他部分以找出错误原因的原因。
答案 1 :(得分:0)
您无需使用cast
或isnumeric
只需txntype = 9