SQL Server中的小技巧(重复、替换、截取、去空格、去小数点后的位数)

PS:随笔写的在SQL Server中要用到的 (重复、替换、截取、去空格、去小数点后的位数)

/*---------------------------重复--------------------------------*/

--重复字符串 返回【abc#abc#abc#】
select replicate(‘abc#‘, 3);

/*---------------------------替换--------------------------------*/

--替换字符串 将e替换成E 返回【abcEdEf】
--replace(‘字符串‘, ‘替换前的文字‘, ‘替换后的文字‘)
select replace(‘abcedef‘, ‘e‘, ‘E‘);

--指定位置替换字符串  返回【heABCworld】
--stuff(‘字符串‘, 从哪里开始替换, 替换几位, ‘要替换的字符‘)
select stuff(‘hello world‘, 3, 4, ‘ABC‘);

/*----------------------------截取--------------------------------*/

--截取字符串 返回【a    ,ab    ,Wrold】
--subString(‘字符串‘, 从哪里开始截取, 截取几位)
select subString(‘abc‘, 1, 1), subString(‘abc‘, 1, 2), subString(‘hello Wrold‘, 7, 5);

--取左边字符串  返回【left,leftStr】
--left(‘字符串‘, 从左边开始取几位)
select left(‘leftString‘, 4);
select left(‘leftString‘, 7);

--取右边字符串  返回【String,ing】
--right(‘字符串‘, 从右边开始取几位)
select right(‘leftString‘, 6);
select right(‘leftString‘, 3);

/*---------------------------去空格----------------------------------*/

--去掉左边空格
select ltrim(‘ abc‘), ltrim(‘# abc#‘), ltrim(‘  abc‘);

--去掉右边空格
select rtrim(‘ abc    ‘), rtrim(‘# abc#   ‘), rtrim(‘abc‘);

/*-------------------------去小数点后的位数----------------------------*/

--用函数ROUND(数值,s) ,其中s 表示小数位数
SELECT ROUND(4.994,2) --返回4.990

--用函数CAST(数值as numeric(n,s)),其中n表示有效数字位数,s表示小数位数
SELECT CAST(4.994 as numeric(10,2))--搜索返回4.99

--用函数CONVERT(numeric(n,s),数值),其中n表示有效数字位数,s表示小数位数
SELECT CONVERT(numeric(10,2),4.9852222)-- 返回4.99
时间: 2024-10-18 01:21:04

SQL Server中的小技巧(重复、替换、截取、去空格、去小数点后的位数)的相关文章

SQL Server 一些使用小技巧

原文:SQL Server 一些使用小技巧 1.查询的时候把某一个字段的值拼接成字符串 以下是演示数据. 第一种方式:使用自定义变量 DECLARE @Names NVARCHAR(128) SET @Names='' -- 需要先赋值为空字符串,不然结果会是 null SELECT @Names=@Names+S_Name+',' -- S_Name 类型为字符串类型,如果不能隐示转换,就需要强制转换 FROM Student SELECT @Names 这种方法有一个好处就是,拼接出来的字符

sql server 之函数小技巧 && 整数类型为空是用空字符串替代实现

1.判空函数 说明:使用指定的替换值替换 NULL. 语法:ISNULL ( check_expression , replacement_value ) 参数: check_expression:将被检查是否为 NULL 的表达式.check_expression 可以为任何类型. replacement_value:当 check_expression 为 NULL 时要返回的表达式.replacement_value 必须是可以隐式转换为 check_expresssion 类型的类型.

为什么SQL语句Where 1=1 and在SQL Server中不影响性能

    最近一个朋友和我探讨关于Where 1=1 and这种形式的语句会不会影响性能.最后结论是不影响.     虽然结论正确,但对问题的认识却远远没有解决问题的根本.实际上在T-SQL语句的书写过程中经常犯得错误就是得出一个很窄的结论,然后教条式的奉若圣经,对于T-SQL领域来说,在网上经常可以看到所谓的优化守则,随便在网上搜了一些摘录如下: 不要有超过5个以上的表连接(JOIN) 考虑使用临时表或表变量存放中间结果 少用子查询 视图嵌套不要过深,一般视图嵌套不要超过2个为宜. 对出现在wh

在SQL Server中快速删除重复记录

在SQL Server中快速删除重复记录 2006-07-17 21:53:15 分类: SQL Server 开发人员的噩梦——删除重复记录 想必每一位开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地会碰到由于表中存在重复的记录而导致查询和统计结果不准确.解决该问题的办法就是将这些重复的记录删除,只保留其中的一条. 在SQL Server中除了对拥有十几条记录的表进行人工删除外,实现删除重复记录一般都是写一段代码,用游标的方法一行一行检查,删除重复的记录.因为这种方法需要对整个表

SQL Server优化技巧之SQL Server中的"MapReduce"

日常的OLTP环境中,有时会涉及到一些统计方面的SQL语句,这些语句可能消耗巨大,进而影响整体运行环境,这里我为大家介绍如何利用SQL Server中的”类MapReduce”方式,在特定的统计情形中不牺牲响应速度的情形下减少资源消耗. 我们可能经常会利用开窗函数对巨大的数据集进行分组统计排序.比如下面的例子: 脚本环境 /* This script creates two new tables in AdventureWorks: dbo.bigProduct dbo.bigTransacti

13 三种方式替换SQL Server中的NULL值(Different ways to replace NULL in Sql Server)

在Sql Server中有三种方式对查询结果中的NULL值进行替换. 如有下面的一张表: 我们可以通过自连接(Self-Join)的方式一张员工名和其对应的经理名的表: SELECT E.[Name],M.[Name] FROM [tblEmployee] AS E LEFT JOIN [tblEmployee] AS M ON E.ManagerId = M.EmployeeId 我们可以看到,Todd对应的Manger为NULL,这说明Todd应该是公司的最高层,他没有经理.但是这样显示很不

SQL Server 中关于 @@error 的一个小误区

原文:SQL Server 中关于 @@error 的一个小误区 在SQL Server中,我常常会看到有些前辈这样写: if(@@error<>0) ROLLBACK TRANSACTION T else COMMIT TRANSACTION T 一开始,我看见别人这么写,我就想当然的以为它只是个计数器,每当检测到一处错误时,@@error的值+1,不过就因为这个理所当然,所以杯具了... 实际上,它并不是一个计数器,它是一个动态的值,动态的标识最后一条SQL命令执行的结果,如果成功则为0,

删除sql server中重复的数据

原文:删除sql server中重复的数据 with list_numbers as( select Name, AuthorOrTime, Url, Price, EstimatePrice, Size, Category, ROW_NUMBER() over (order by Name, AuthorOrTime, Url, Price, EstimatePrice, Size, Category) as 'rownumber' from Arts)delete list_numbers

SQL Server中利用正则表达式替换字符串

原文:SQL Server中利用正则表达式替换字符串 建立正则替换函数,利用了OLE对象,以下是函数代码: --如果存在则删除原有函数 IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL DROP FUNCTION dbo.RegexReplace GO --开始创建正则替换函数 CREATE FUNCTION dbo.RegexReplace ( @string VARCHAR(MAX), --被替换的字符串 @pattern VARCHAR(255),