❶ sqlserver中如何把字符串转换成数字
SQL Server中的数值类型分为两种,一种是精确的数值类型,具体的数据类型有:bit、tinyint、smallint、int、bigint、smallmoney、money和decimal,这些数据类型能够精确的表明某以数值;另一种是近似的数值类型,具体就是float和real。浮点数据为近似值,因此,并非数据类型范围内的所有值都能精确地表示。x0dx0a有些时候我们需要将这些数值类型转换为字符串类型,用到的转换函数就是cast和convert,这两个函数的作用都是进行类型转换,只不过语法格式不同。据说在转换时还是有一定的区别的,不过我个人更习惯于使用convert函数,应该这个函数一方面更像是个函数的语法,另一方面在做时间和数值转换成字符串时还可以指定转换的格式。x0dx0a对于精确数值的数据类型,转换出来的字符串就是我们存储的数值。比如:x0dx0adeclare @i intset @i=123456789x0dx0aprint 'test:'+convert(varchar(20),@i)x0dx0a输出就是:test:123456789x0dx0a而如果对于近似数值的数据类型,那么可就没有那么简单了。x0dx0adeclare @i floatset @i=123456789x0dx0aprint 'test:'+convert(varchar(20),@i)x0dx0a输出结果:test:1.23457e+008x0dx0a输出的结果是使用科学计数法来表示的,再看看可否通过指定转换样式来指定不使用科学计数法呢?帮助文档中说到float 或 real 转换为字符数据时的 style 值:x0dx0a0(默认值)最大为 6 位数。根据需要使用科学记数法。x0dx0a1 始终为 8 位值。始终使用科学记数法。x0dx0a2 始终为 16 位值。始终使用科学记数法。x0dx0a我们的值是123456789,超过了6位数.所以不管是0还是1,2结果都会使用科学计数法来表示。那么要怎么样才能将我们的数据不转换成科学计数法而输出呢?比较简单的办法就是将近似数据转换为精确数据,然后再将精确数据转换成字符串。x0dx0a同样以上面的例子为例, 进行两次数据类型的转换如下:x0dx0adeclare @i floatset @i=123456789x0dx0aprint 'test:'+convert(varchar(20),convert(int,@i))x0dx0a输出:test:123456789如果是有小数,那么我们要转换出小数位的话,可以转换成decimal,转换出的小数位数在定义decimal时指定。比如要输出4位小数,那么转换代码是:x0dx0adeclare @i floatset @i=123456789.12x0dx0aprint 'test:'+convert(varchar(20),convert(decimal(18,4),@i))x0dx0a输出:test:123456789.1200
❷ 数据库字段补'0'
写个函数:
CREATE Function xfn_UpdateZero(@Str VARCHAR(20),@Len INT)
RETURNS VARCHAR(20)
AS
BEGIN
DECLARE @ALEN INT
SET @ALEN=0
WHILE @ALEN<@Len-1
BEGIN
SET @Str='0'+@Str
SET @ALEN=@ALEN+1
END
RETURN @Str
END
然后更新字段值:
update table_name set 字段名=dbo.xfn_UpdateZero(字段名,5)
这样这个字段的所有数据长度都变成了5
(PS:前提是这个字段中不可以有值的长度大于五位,否则这个值不会更新)
❸ sql语句问题 在一组数字前面加一个0
如果该列是char或者varchar类型 直接:
update 表名
set 列名='0'+列名
就可以.
如果该列是数值型,可以用
update 表名
set 列名='0'+ltrim(rtrim(str(列名)))
❹ sql 字符转换数值
select cast('12.5' as float)
select convert(float,'12.5')
这两种方法在MS SQL中效果是一样的,
但前者可以直接移植到ORACLE中使用.
❺ SQL 中怎么把字符串转换为数字
可以使用函数:ISNUMERIC
当输入表达式得数为一个有效的整数、浮点数、money 或 decimal 类型,那么 ISNUMERIC 返回 1;否则返回 0。返回值为 1 确保可以将 expression 转换为上述数字类型中的一种。
将字符的数字转成数字,比如'0'转成0可以直接用加法来实现;
若绝对比较可以这样:
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语句中如何将字符类型转换成数字类型
to_number()转为数字格式
to_char()转为字符串格式
to_date()转为时间格式
..........
转为数字格式只有是数字的字符串才能转,这句话可能有点歧义,
通常字符前面带0或点的数字字符串转数字用到,如000012转为12,.55转为0.55,若是个英文符号等字符转了就报无效数字类型的错,如果遇到两种数据类型不一致情况数据库默认是会转的,如关联
ta.a=ba.b
ta.a是字符串,ba.b是数字,或者将ta.a插入到ba.b数据库就会自动转
❼ sql 不够七位数 在左侧自动补零,怎么实现
您好:
跟您一个参考资料
第一种方法:
right('00000'+cast(@countasvarchar),5)
其中'00000'的个数为right函数的最后参数,例如这里是5,所以有5个0
@count就是被格式化的正整数
例如:
1、selectright('00000'+cast(dense_rank()over(orderbyzsbh)asVARCHAR(20)),5)
2、declare@countint
set@count=0
while(@count<1000)
begin
printright('00000'+cast(@countasvarchar),5)
set@count=@count+1
end
第二种方法:使用REPLICATE函数,将字串值重复指定的次数。例如:
REPLICATE('重复',3)输出结果为:重复重复重复
【值得注意的是当integer_expression值为负值,则返回NULL】
因此,补0操作可如下实现:
SELECTREPLICATE('0',5-len('9'))+'9'--左边补0,如00009
SELECT'9'+REPLICATE('0',5-len('9'))--右边补0,如90000
第三种方法:使用stuff函数,删除指定长度的字符,并在指定的起点处插入另一组字符。例如:
第一个字符串abcdef中删除从第2个位置(字符b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串。
SELECTSTUFF('abcdef',2,3,'ijklmn')
输出结果为:
aijklmnef。
因此补0操作可如下实现:
selectstuff('00000',len('00000')-len('123')+1,len('123'),'123')
❽ SQL中字符串转换成数值
4、数据类型转换函数
函数名 操作 例 结果
ASC(S) 求第一个字符串的ASCII码 ASC("what") 87
CHR(N) 求ASCII码的字符 CHR(87) w
STR(R,L,D) 数值转换成字符,L为长度,D为小数位数 X=3.1415
STR(X,6,2) 3.14
VAL(S) 字符串转换为数值 VAL("123") 123.00
CTOD(S) 字符串转日期 CTOD('11/01/2002') 11/01/2002
DTOC(D) 日期转换成字符串 DTOC(DATE()) 11/01/2002
DTOS(D) 把日期转成年月日式的字符串 DTOS(DATE()) 20021101
CTOT(C) 字符串转成日期时间型 CTOT(11/01/2002 10:30:50am) 11/01/2002 10:30:50am
DTOT(D) 日期型转为日期时间型 DTOT(DATE()) 11/25/2001 00:00:01am
TTOC(T) 日期时间型转为字符型 TTOC(DATETIME()) 11/25/2001 00:00:01am
TTOD(T) 日期时间型转为日期型 TTOD(DATETIME()) 11/25/2001
IIF(LE,E1,E2) 逻辑判断 IIF(A>0,"YES","NO") YES