数字转字符sql
① sql语言,我将数字转成字符串,数字的值变了。详情如下
double是浮点数,任意将数字从十进制转化到二进制存储的,不管用多少位,都有可能出现数据偏差,只是位数越多,偏差越小。
只有用string直接存放才可保证绝对准确。
② sql语句怎样把查询出来的数字转换陈字符
很简单啊。
string Sqlstr = "0120";//假设这个是从数据库取出的值
string[] arrs = new string[] { "零", "壹", "贰" ,"叁",'肆"};//这里是从1到9的大写。。。你可以一直写下去
char[] chars = Sqlstr.ToCharArray();//把从数据库获取的数字转换成char类型
StringBuilder sb = new StringBuilder();
for (int index = 0; index < chars.Length; index++)
{
string newValue = arrs[int.Parse(chars[index].ToString())];//这一句是核心,我们每获取一个数字,因为我们0是对应零的,1是对应壹的,2是对应贰的。。。所以,我就可以在arrs这个数据获取到相应的值。就OK了
sb.Append(newValue);//没获取一个就放进sb里面,最后输出来了。
}
③ 在sql server2000中,如何把整型字段转换成字符串型字段
使用函数STR()
STR
由数字数据转换来的字符数据。
语法
STR ( float_expression [ , length [ , decimal ] ] )
参数
float_expression
是带小数点的近似数字 (float) 数据类型的表达式。不要在 STR 函数中将函数或子查询用作 float_expression。
length
是总长度,包括小数点、符号、数字或空格。默认值为 10。
decimal
是小数点右边的位数。
返回类型
char
注释
如果为 STR 提供 length 和 decimal 参数值,则这些值应该是正数。在默认情况下或者小数参数为 0 时,数字四舍五入为整数。指定长度应该大于或等于小数点前面的数字加上数字符号(若有)的长度。短的 float_expression 在指定长度内右对齐,长的 float_expression 则截断为指定的小数位数。例如,STR(12,10) 输出的结果是 12,在结果集内右对齐。而 STR(1223, 2) 则将结果集截断为 **。可以嵌套字符串函数。
说明 若要转换为 Unicode 数据,请在 CONVERT 或 CAST 转换函数内使用 STR。
示例
A. 使用 STR
下例将包含五个数字和一个小数点的表达式转换为有六个位置的字符串。数字的小数部分四舍五入为一个小数位。
SELECT STR(123.45, 6, 1)
GO
下面是结果集:
------
123.5
(1 row(s) affected)
当表达式超出指定长度时,字符串为指定长度返回 **。
SELECT STR(123.45, 2, 2)
GO
下面是结果集:
--
**
(1 row(s) affected)
即使数字数据嵌套在 STR内,结果集也是带指定格式的字符数据。
SELECT STR (FLOOR (123.45), 8, 3)
GO
下面是结果集:
--------
123.000
(1 row(s) affected)
④ 在sql中如何实现电话号码中间的4位数字转换成特殊字符
不同的数据库做法不同
replace就是替换,虽然是字符的替换,不过你的特殊字符应该不是数字吧,所以你的号码应该存成字符型,不然假设你的替换字符是xxxx,可是这个可是没办法插入数字格式的。
你说的中间四位怎么定义,是类似xxx xxxx xxxx种种,还是XX YYYY xx这种,如果是前面那种那就用定位比如substr,不知道你是什么数据库,只能用oracle的方式写,可以根据自己数据库自行查找相应函数
比如,replace(字符串,substr(字符串,4,4),'XXXX')
这样的话,假设源字符串为001 1101 1100,那么就会变为001 xxxx 1100
当然,这个语句本身是有问题的,如果刚巧你的号码比较特殊,比如001 0101 0101,那么可能就变成了0XXXX XXXX 01,或者001 1001 1001 那么就是001 XXXX XXXX
那么怎么只更换中间四位,其他位置有特殊的也不动呢?
有两个办法
(1)分开显示人然后合并,比如 selelct substr(字符串,1,3)||‘XXXX’|| substr(字符串,-1,4) (本写法是oracle的,其他数据库的连接符号各有不同,情自行查找)
(2)replace全部替换,其实合作前面的差不多,比如replace(字符串,substr(字符串,1), substr(字符串,1,3)||‘XXXX’|| substr(字符串,-1,4))
⑤ mysql中int型的数字怎么转换成字符串
MySQL 数字类型转换函数(concat/cast)。
1、将Int 转为varchar经常用 concat函数,比如concat(8,’0′) 得到字符串 ’80′。
2、将varchar 转为Int 用 cast(a as signed) a为varchar类型的字符串。
总结:类型转换和SQL Server一样,就是类型参数有点点不同 : CAST(xxx AS 类型) , CONVERT(xxx,类型)。
(5)数字转字符sql扩展阅读:
可用的类型:
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
cast函数运行示例
⑥ 在SQL语句里面如何将字符型转换成数字型
先检查金额列的数据是否都符合小数规范,用cast(金额 asdecimal(10,4))>500或者
convert(decimal(10,4),金额)>500
注:decimal的长度和小数位数根据自己需要设定
sql中将字符串数字转换成数字:
方法一:SELECT CAST('123' AS SIGNEDinteger);
方法二:SELECT CONVERT('123',SIGNED);
方法三:SELECT '123'+0;
(6)数字转字符sql扩展阅读:
能将字符型转换成数字型,就能将数字转化为字符,对于精确数值的数据类型,转换出来的字符串就是我们存储的数值。比如:
declare @i int
set @i=123456789
print 'test:'+convert(varchar(20),@i)
输出就是:test:123456789
而如果对于近似数值的数据类型,那么可就没有那么简单了。
declare @i float
set @i=123456789
print 'test:'+convert(varchar(20),@i)
输出结果:test:1.23457e+008
⑦ SQL 中怎么把字符串转换为数字
具体方法如下:
将字符的数字转成数字,比如'0'转成0可以直接用加法来实现;
例如:将pony表中的d
进行排序,可d的定义为varchar,可以这样解决;
select
*
from
pony
order
by
(d+0);
在进行ifnull处理时,比如
ifnull(a/b,'0')
这样就会导致
a/b成了字符串,因此需要把'0'改成0,即可解决此困扰;
比较数字和varchar时,比如a=11,b="11ddddd";
则
select
11="11ddddd"相等;
若绝对比较可以这样:
select
binary
11
=binary
"11ddddd";
字符集转换
:
CONVERT(xxx
USING
gb2312);
类型转换和SQL
Server一样,就是类型参数有点点不同
:
CAST(xxx
AS
类型),CONVERT(xxx,类型);
类型必须用下列的类型:BINARY、CHAR()、DATE、TIME、DATETIME、DECIMAL、SIGNED、UNSIGNED。
⑧ SQL 中怎么把字符串转换为数字
具体方法如下:
将字符的数字转成数字,比如'0'转成0可以直接用加法来实现;
例如:将pony表中的d 进行排序,可d的定义为varchar,可以这样解决;
select * from pony order by (d+0);
在进行ifnull处理时,比如 ifnull(a/b,'0') 这样就会导致 a/b成了字符串,因此需要把'0'改成0,即可解决此困扰;
比较数字和varchar时,比如a=11,b="11ddddd";
则 select 11="11ddddd"相等;
若绝对比较可以这样:
select binary 11 =binary "11ddddd";
字符集转换 : CONVERT(xxx USING gb2312);
类型转换和SQL Server一样,就是类型参数有点点不同 : CAST(xxx AS 类型),CONVERT(xxx,类型);
类型必须用下列的类型:BINARY、CHAR()、DATE、TIME、DATETIME、DECIMAL、SIGNED、UNSIGNED。
⑨ sql怎么把数字类型转换成字符串类型
1
2
3
select cast(字段 as varchar) from 表名
--或者
select convert(varchar(50),字段) from 表名