SQL Server中的数字字符串比较

时间:2012-06-18 07:18:09

标签: sql sql-server

我对SQL Server有一个相当愚蠢的问题。我试图在SQL Server中存储BigInt,并且在将其插入Nvarchar(Max) - 样式字段之前,我可以将其转换为字符串。

但是,我需要针对该列运行SELECT语句,因为它是一个字符串,我不确定如何评估它。我知道某些语言的字符串会以数字方式进行评估,因此'234234'被认为小于'2342545345344'。可以在这里做类似的事吗?

修改 爆炸,我是个白痴。我的意思是说C#的BigInteger,它可以保存比SQL的BigInt大得多的值。

2 个答案:

答案 0 :(得分:2)

order by cast(varchar_column as bigint)

答案 1 :(得分:1)

您将执行什么类型的SELECT?作为快速的第一步(假设所有值都是正数,并存储为数字序列(没有科学符号或符号)),您可以比较两个字符串的长度。

较短的字符串是两者中较小的字符串。如果两个字符串 的长度相同,则较小的字符串(按字母顺序)在数字上较小。

因此,为0输出a小于b1表示相等,2表示a大于b {1}}:

CASE
  WHEN LEN(a) < LEN(b) THEN 0
  WHEN LEN(a) > LEN(b) THEN 2
  WHEN a < b THEN 0
  WHEN a > b THEN 2
  ELSE 1
END