大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:
成都创新互联-专业网站定制、快速模板网站建设、高性价比于都网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式于都网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖于都地区。费用合理售后完善,十年实体公司更值得信赖。
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
这个SQl中,inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA) 中dsc.ID为数字类型,dd.AREA为字符类型,相当于这样on(1='1')的判断,这时候就会自动吧字符串的'1'转换为数字类型再比较的。
但是也有弊端,一旦字符类型转换为数字类型出错(说明字符串的确就非数字组成的),SQL就会抛出异常。
SQL SERVER 2005中有判断字段是否为数字的函数:
ISNUMERIC(字段名) -----假如字段是数字类型返回1,不是就返回0
但是好像有的时候不好使,比如:select isnumeric('3,34') 就返回1
说明这个函数对字段值中全是数字但是数字间用“,”和“.”(逗号或点)隔开的都视为数字了!
有两种。
1.转换(int,字段名)
例如:选择convert(int,'3')
选择cast('3'作为int)
一般来说,没有必要将字符串转换为数字类型,如果你需要比较两个字段是相等的,但为字符串类型字段,类型,用“=”来比较这两个值是相等的,SQLSERVER将自动将字符串转换为一个数字,然后比较。
扩展资料:
注意事项:
这两个函数都执行强制转换,但是语法不同。据说有一些不同的转换,但我更习惯于使用转换函数,它更像一个函数的语法一方面,可以指定的格式转换,将时间和价值转换为一个字符串。
对于数据类型的确切值,转换后的字符串是我们存储的值。如:
声明@iintset@i=123456789print'test:'+转换(varchar(20),@i)
输出是:test:123456789
对于具有近似值的数据类型,情况就不那么简单了。
声明@ifloatset@i=123456789print'test:'+转换(varchar(20),@i):test:1.23457e+008
转义字符有:\a、\b、\n、\f、\t、\v等。
除此之外还有如HTML转义符、java转义符、xml转义符、 oracle转义符、sql转义符 、sqlserver 转义符、php转义符、asp转义符、vb转义符、 javascript转义符等等,还有网址中的百分号。
以下是转义字符用处的相关介绍:
转义无非是两种情况:将普通字符转为特殊用途,一般是编程语言中,用于表示不能直接显示的字符,比如后退键,回车键等。用来将特殊意义的字符转换回它原来的意义。
一般用在正则表达式中。还有有些脚本语言是弱类型,有些语言比如html 并不是编程语言,而是标记语言,有些语言只有一种类型,比如shell脚本语言,这些语言中字符串都不加引号” ” ,或者可以不加引号“ ”,所以有时候需要转义字符说明某字符此时的身份是普通字符,而不是有特殊意义的元字符。
以上资料参考百度百科——转义字符
你看下你日期是datetime类型还是varchar类型
如果是varchar类型
select replace(replace(replace(日期字段,'-',''),':',''),' ','') from 表名
如果是datetime类型
select replace(replace(replace(convert(varchar,日期字段,120),'-',''),':',''),' ','') from 表名
不知道你的字符串类型的日期是什么样子的,下面有一个例子:
Test_OldTable是包含19990101等nvarchar数据类型的表,
Test_NewTable是包含DateTime数据类型的表
sql语句:
INSERT INTO Test_NewTable(NewDate)
SELECT CAST(OldDate AS DateTime)
FROM Test_OldTable
其他的方法还有很多,给你个链接,看看吧,网上多找找
declare @b int
set @a = '123'
set @b = 123
cast(@a as int)--就是把@a转换为int类型的
cast(@b as varchar(20))--就是把@b转换为varchar类型的
declare @a varchar(20)
set @a = '12345(789)'
print left(@a, CHARINDEX ('(',@a,1)-1 )
--输出12345