【发布时间】:2015-04-16 17:28:05
【问题描述】:
有没有办法根据它是否为数字来在 select 语句中转换 nvarchar 字段。我目前有这段代码,但由于某种原因它正在尝试转换其中一个非数值。
SELECT id,
CASE WHEN ISNUMERIC(field) = 1 THEN CAST(field AS INT) ELSE CAST(field AS NVARCHAR(10)) END AS [fieldName]
FROM table1
【问题讨论】:
-
SQL 中的列具有数据类型。您不能在同一列中混合数据类型。也许您可以做的是使用 SQL_VARIANT 列(只是想)
-
很遗憾,答案是否定的。您的查询返回具有单一数据类型的单列。要求 SQL Server 为单个列返回两种不同的数据类型就像要求一辆四轮驱动摩托车。
-
还有其他选择,例如将值转换为特定格式的数字,然后将其转换回 nvarchar 值 - 您能描述一下您要在这里完成的工作吗?也许还有另一种方法可以解决这个问题。
-
我将值放入 VB 中的 datagridview 中,并希望它在单击 datagridview 的列标题时正确排序数字,升序或降序
标签: sql sql-server select casting numeric