0

以下按以下顺序对 CustomerNo 进行排序:(1,2,3,10,20,400),这是预期的。但是在插入非数字 CustomerNo(例如 1a)时出现错误。问题是 WHERE 子句,其中 CustomerNo > 1。

Conversion failed when converting the varchar value '1a' to data type int.

我并不特别关心订单中的非数字 CustomerNo 的位置。我只是不希望它失败。如果我删除 WHERE 子句,我总是得到订单 (1,2,3,10,20,400, 1a),但是使用 SELECT TOP 1 *,我总是得到 CustomerNo=1 的行。我想得到下一个。

SELECT TOP 1 *
FROM [Database].[Company].[Table]
WHERE CompanyNo = 804
  AND CustomerNo > 1
ORDER BY 
  CASE IsNumeric(CustomerNo) 
    WHEN 1 THEN Replicate('0', 100 - Len(CustomerNo)) + CustomerNo 
    ELSE CustomerNo
  END
4

1 回答 1

1

我就是这样做的(将其调整为您的列长度):

CASE IsNumeric(site_id) WHEN 1 THEN REPLACE(STR(site_id, 8, 0), ' ', '0') ELSE site_id END
于 2013-09-16T07:19:18.983 回答