标签归档:sql技巧

mssql sqlserver 判断一个字符串被另一个字符串完整包含的方法分享


摘要:
下文讲述检测字符串是否完整包含另一个字符串的方法,如下所示:
实验环境:sql server 2008 R2

下文将通过举例的方式分享检测字符串之间的包含关系

  declare @maomao365A varchar(200)
declare @maomao365B varchar(200)

set @maomao365A ='sql教程2018'
set @maomao365B ='sql教程' 

---方法1:使用like 检测
select N'包含'  as flag 
where @maomao365A like '%'+@maomao365B+'%'

---方法2:使用charindex进行相关检测
select   case
 when charindex(@maomao365B,@maomao365A) >0
 then N'包含' else N'不包含' 
 end as flag 

mssql sqlserver 使用sql脚本剔除字符串(左边或右边)零的方法


摘要:
下文讲述使用sql脚本剔除字符串(左边或右边)零的方法分享,如下所示:
实验环境:sql server 2008 R2


实现思路:
通过将整个字符串中的零全部替换为特殊字符,然后将特殊字符替换为空格

   ---1.如果字符串不存在空格字符串,我们可以借助空格字符串对数据进行处理
   --- 首先将0全部替换为空格字符串,然后使用ltrim或rtrim字符串,然后再将空格字符串替换为零
      create table [maomao365.com]
	(info nvarchar(30))
	go
	insert into [maomao365.com] (info)
	values ('0012401245120'),('a'),
	(N'0猫猫小屋'),(N'sql教程0')
	go
	select 
	replace(
		ltrim(rtrim(replace(info,'0',' ') )),
		' ','0')
	from 
	[maomao365.com]
  
	go
	truncate table  [maomao365.com]
	drop     table  [maomao365.com]
	go 
--------------------------------------------------------------

   ---2.采用自定义函数处理左边0(右边同理)   
      
   ---例:剔除左边的0
    create function dbo.fn_test(@a nvarchar(30))
      returns nvarchar(30) 
    as 
    begin
  
   declare @tmp nvarchar(30)
   set @tmp =left(@a,1)
      while @tmp ='0'
       begin
         set @a =substring(@a,2,len(@a))
         set @tmp =left(@a,1)
     end
   
     return @a
   end
go
-----------------------------------------------------
create table [maomao365.com]
(info nvarchar(30))
go
insert into [maomao365.com] (info)
values ('0012401245120'),('a'),
(N'0猫猫小屋'),(N'sql教程0')
go
select 
 dbo.fn_test(info)
 from 
 [maomao365.com]
  
go
truncate table  [maomao365.com]
drop     table  [maomao365.com]
go

drop function dbo.fn_test 
 

相关阅读:
MSSQL sql server 字符串函数 Left 功能简介

mssql sqlserver 删除”数字字符串”前面的零和删除”小数位”后面零的方法分享


摘要:
下文从实例的方式分享删除”数字字符串”前面的零和“小数位”后面零的方法,如下所示:
实验环境:sql server 2008 R2



一、数字字符串剔除前面零的方法

实现思路:
将数字字符串转换为int 或者decimal类型后,前面的零就会自动消失掉,如下例所示:

   declare @maomao varchar(36)
    set @maomao ='00185'
     print @maomao
     print '-----'
     print convert(int,@maomao) 
     --------------------------
     set @maomao ='00185.23'
     print @maomao
     print '-----'
     print convert(decimal(18,2),@maomao) 
  


二、数值型剔除小数位后面多余零的方法

实现思路:
将数值型的类型转换为float类型,多余的零会自动消失

 DECLARE @maomao TABLE(info DECIMAL(18,2));
INSERT INTO @maomao (info)
          VALUES(8.00),(7.20),(3.20);
----------------------------------------
SELECT *,CAST(info AS float) AS infoEx 
FROM @maomao