MS SQL Server:将double转换为字符串并比较文本

时间:2013-10-03 08:03:31

标签: sql sql-server casting

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

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

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

编辑:我尝试了SELECT str([id],9,0)我得到了正确的字符串,或者至少看起来对我来说是正确的,但是当比较相等的字符串时,比较失败了。有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:4)

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

SELECT * FROM MyTable
WHERE CAST(Id AS VARCHAR) LIKE '21%'

答案 1 :(得分:0)

您可以在TSQL中使用convert方法,并选择精度:http://msdn.microsoft.com/en-us/library/ms187928.aspx(备注中的float和real Styles部分)。

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

答案 2 :(得分:0)

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