在MS SQL Server中,我有一个名为ID
的类型为double的字段,并且存储ID号,令人惊讶。
无论如何,我希望能够搜索像文本这样的ID号码 - 比如我想要所有以021开头的ID或以04结尾的ID - 这样做我需要将双倍的字符串转换成。
我的问题是这里的身份证号码是9位数,所以当我尝试SELECT str([id])
时,我会收到类似02123+e23
的内容,这对我的目的不利。
如何将其转换为看起来完全相同的字符串,并且可以与其他字符串进行比较?
编辑:我尝试了SELECT str([id],9,0)
我得到了正确的字符串,或者至少看起来对我来说是正确的,但是当比较相等的字符串时,比较失败了。有什么想法吗?
谢谢!
答案 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'