使用 BETWEEN 函数

New*_*bie -1 sql sql-server

我有这个查询,我试图使用它对我的数据进行分类。如果第一个字符在0到9之间,我想用第一个字符来分类。如果是其他任何东西,包括特殊字符或字母,那么我想使用 10。

select CUSTOMER_ID, CASE
                    WHEN LEFT(CUSTOMER_ID, 1) BETWEEN 0 AND 9 THEN LEFT(CUSTOMER_ID, 1)
                    ELSE '10'
                END
                AS CUST_DIGIT
 from CUSTOMER
Run Code Online (Sandbox Code Playgroud)

运行上述查询时出现此错误:

将 nvarchar 值“A”转换为数据类型 int 时转换失败。

这就是我的数据的样子。你能帮我指出我可以改变的地方吗?

在此处输入图片说明

Kar*_*ran 5

将您的值更新为string'0' AND '9'然后它将起作用。

您收到错误的原因是当您执行LEFT,它将返回string你与它比较int0 AND 9int,那么它会尝试你的结果值从转换LEFTint

您的一些记录digit在开始时具有这些价​​值,它们可以正常工作,但是当记录出现​​时A46564,它将无法cast Atoint和 throw error

SELECT CUSTOMER_ID, CASE
                        WHEN LEFT(CUSTOMER_ID, 1) BETWEEN '0' AND '9' THEN LEFT(CUSTOMER_ID, 1)
                        ELSE '10'
                    END AS CUST_DIGIT
FROM CUSTOMER
Run Code Online (Sandbox Code Playgroud)