Sql中有没有把字符串转换成int数值类型

2024-11-20 15:31:56
推荐回答(4个)
回答1:

有两种。

1、convert(int,字段名) 

例如:select convert(int,'3')

2、cast(字段名 as int) 例如:select cast('3' as int)

一般情况下没有必要把字符串转换为数字类型,假如需要比较两个字段是否相等,但是一个字段为字符串类型,一个为数字类型,用“=”比较两个值是否相等时,SQL SERVER会自动把字符串转换为数字再比较的。

扩展资料:

注意事项

这两个函数的作用都是进行类型转换,只不过语法格式不同。据说在转换时还是有一定的区别的,不过我个人更习惯于使用convert函数,应该这个函数一方面更像是个函数的语法,另一方面在做时间和数值转换成字符串时还可以指定转换的格式。

对于精确数值的数据类型,转换出来的字符串就是我们存储的数值。比如:

declare @i intset @i=123456789print 'test:'+convert(varchar(20),@i)

输出就是:test:123456789

而如果对于近似数值的数据类型,那么可就没有那么简单了。

declare @i floatset @i=123456789print 'test:'+convert(varchar(20),@i)
输出结果:test:1.23457e+008

回答2:

直接用 cast('1' as integer) 

PostgreSQL中直接使用转换符号::(连续两个冒号)就可以实现类型的强制转换。

可以使用函数:ISNUMERIC;当输入表达式得数为一个有效的整数、浮点数、money 或 decimal 类型,那么 ISNUMERIC 返回 1;否则返回 0。返回值为 1 确保可以将 expression 转换为上述数字类型中的一种。

串接子串

“串接”是 Σ* 上的重要二元运算。对于 Σ* 中的两个字符串 s 和 t,它们的串接被定义为在 s 中的字符序列之后跟随着 t 中的字符序列,并被指示为 st。例如,Σ = {a, b, …, z},并且 s = bear 且 t = hug,则 st = bearhug 而 ts = hugbear。

字符串串接是结合性的,但非交换性运算。空串充当单位;对于任何字符串 s,有 εs = sε = s。所以,集合 Σ* 和串接运算形成了幺半群,就是从 Σ 生成的自由幺半群。此外,长度函数定义从 Σ* 到非负整数的幺半群同态。

以上内容参考:百度百科-字符串

回答3:

在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:
1. convert(int,字段名) 例如:select convert(int,'3')
2. cast(字段名 as int) 例如:select cast('3' as int)
其实,一般情况下没有必要把字符串转换为数字类型
假如需要比较两个字段是否相等,但是一个字段为字符串类型,一个为数字类型,用“=”比较两个值是否相等时,SQL SERVER会自动把字符串转换为数字再比较的!
例如:
select da.TITLE_NAME,dsc.NAME
from dbo.DV_DUTY dd
inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA)
left join DV_ASSET da on(da.ID=dd.RECORD_ID and dd.TYPE='2')
where dd.AREA is not null

回答4:

应该是没有的,我没用过,我都是在传入值之前把类型转换一下,所以我没有用过,其实在用前转换也还可以。