【发布时间】:2016-09-26 16:46:15
【问题描述】:
我正在使用 SQL Server 2012 SP2 开发数据库。
我有一个包含 NVARCHAR(20) 列的表,其中包含数字:“000001”、“000002”等。
我需要在该列中获取最大值并将其转换为 int。我该怎么做?
我发现我可以用这个 sql 语句将 nvarchar 转换为 int:SELECT CAST(YourVarcharCol AS INT) FROM Table
但我不知道如何获得该列中的最大值,因为数字是 nvarchar。
更新:
顺便说一下,这个列是 NVARCHAR,因为我需要在上面存储文本。我正在测试我的解决方案,我需要存储 ONLY 个数字来测试它。
【问题讨论】:
-
SELECT top 1 CAST(YourVarcharCol AS INT) as ival FROM Table order by ival desc
-
使用这个'select max(cast(ColumnName AS INT))from TableName'
-
无论如何,了解您的最终目标是什么以及为什么需要计算数字字符串的最大值会很有趣,因为可能会有更好的解决方案。
-
有什么理由将数值作为文本存储在数据库中?你支持非数字值吗?请注意,可能不会使用此列上的索引,因为字母数字顺序可能与数字顺序不对应,这意味着您的代码可能会对此类查询进行全表扫描,因为此列是文本。您确定这是正确的解决方案吗?
-
如果您目前正在开发新的解决方案,我会强烈建议您将该列的数据类型更改为数字,并保留格式以处理添加此零按需提供。
标签: sql sql-server