1

在 MS SQL Server 中,我有一个 double 类型的字段,称为ID,它存储 ID 号,令人惊讶的是。无论如何,我希望能够像文本一样搜索 ID 号码 - 比如说我想要所有以 021 开头或以 04 结尾的 ID - 为此我需要转换字符串的两倍。

我的问题是这里的身份证号码是 9 位数字,所以当我尝试时,SELECT str([id])我会得到类似的东西02123+e23,这对我的目的不利。

如何将其转换为看起来完全相同的字符串,并且可以与其他字符串进行比较?

编辑:我试过SELECT str([id],9,0)了,我得到了正确的字符串,或者至少对我来说是正确的,但是当与相等的字符串进行比较时,比较失败了。任何想法为什么?

谢谢!

4

3 回答 3

6

如果您的 ID 存储为数字,则不会有前缀零,因此查找所有以“021”开头的记录实际上意味着查找以“21”开头的记录

SELECT * FROM MyTable
WHERE CAST(Id AS VARCHAR) LIKE '21%'
于 2013-10-03T08:09:00.917 回答
0

您可以在 TSQL 中使用 convert 方法,并确定精度:http: //msdn.microsoft.com/en-us/library/ms187928.aspx(备注中的浮点和真实样式部分)。

但是为什么你不能将你的字符串转换成双精度来进行比较呢?

于 2013-10-03T08:12:23.497 回答
0

SELECT * FROM tablename WHERE SUBSTRING(CAST(id AS VARCHAR), 0, 9) = '123456789'

于 2013-10-03T08:13:13.203 回答