一、去除特殊字符
1、SQL trim()函数去掉两头空格
ltrim()去除左空格rtrim()去除右空格。去除两头空格就是 select ltrim(rtrim(字段))
2、replace()函数替换字符
按照ASCII码
select char(64) 对应@ 那么 select replace('abc@163.com',char(64),'d')
结果: abcd163.com
去掉tab为 select replace('字段',char(9),'')
去掉空格为 select replace('字段',char(32),'')
去掉换行为 select replace('字段',char(10),'')
二、小数类型(float 和 decimal区别)
在SQL Server中,实际上小数数值只有两种数据类型:float 和 decimal,分别是近似数值和精确数值。其他小数类型,都可以使用float和decimal来替代,例如,双精度(double precision)数据类型等价于 float(53),real等价于float(24),numeric是 decimal的同义词,应该避免在程序中直接使用 double precision、real和numeric,而是用 float(24) 、float(53)和decimal 代替。
float是近似数值,存在精度缺失;decimal是精确数值,不存在精度损失。当数值不允许精度丢失时,使用 decimal数据类型存储数据。在计算小数的除法时,SQL Server 内部隐式升级数据类型,根据小数数值的数据类型,就近向float(24) 或float(53)转换
三、如何截取指定字段某一个字符的前面/后面的字符串?
假设数据库中,某一列数据像这样,每个数据都有同一个字符“-”,这时如果我们需要获取这个字符的前面的字符串或后面的字符串,应该用什么SQL语句呢?
1 |
|
1.获取“-”前面的字符串:
SUBSTRING( FBILLNO , 1 , CHARINDEX('-',FBILLNO)-1 )
列名 ,从第一位取值 ,要取的字符串长度是“-”字符在字段中的位置减1
2.获取“-”后面的字符串:
SUBSTRING( FBILLNO ,
CHARINDEX('-',FBILLNO)+1 , len(FBILLNO)-charindex('-',FBILLNO) )
列名 , 从“-”字符后一位开始 , 要取的字符串长度是字段总长度减去“-”字符所在位置