一些微SQL技巧

--当A.Level='+'时,显示A2.Name,当A.Level='++'时,显示A.HalfProductCombineName :

select (CASE WHEN A.Level='+' THEN A2.Name WHEN A.Level='++' THEN A.HalfProductCombineName END) AS NAME from MO_BLPackageListLine A left join MO_BLPackageListHead A1 ON A1.ID = A.BLPackageListHead LEFT JOIN CBO_ItemMaster A2 ON A2.ID = A.ItemMaster WHERE A1.ID=1001011300100001 AND A.Level <> '+++'

 

--只显示日期不显示时间

 declare @date datetime  --定义时间日期变量

-- set @date = getdate() --获取系统当前时间

-- select convert(varchar(20),@date,111) --转换成字符--

--只显示时间不显示日期

 declare @date datetime  --定义时间日期变量--

set @date = getdate() --获取系统当前时间-- select convert(varchar(20),@date,114) --转换成字符-- -- 查询处理

 产品名称列里相同的行对应的成品行名产品名称的值累加

SELECT * into #t2 FROM(SELECT 产品名称 FROM #t1 )A OUTER APPLY( SELECT [成品行产品名称]= STUFF(REPLACE(REPLACE( ( SELECT 成品行产品名称 FROM #t1 N WHERE 产品名称 = A.产品名称 --添加判断条件 FOR XML AUTO ), '', ''), 2, 1, '') --), '', ''), 1, 1, '') )N

--replace替换字符串,(列名,需要替换的字符串,替换为哪些字符串)

select 产品名称,replace(成品行产品名称,'成品行产品名称=','') as 成品行产品名称 --返回值heaao,world! into #t3 from #t2 ISNULL(A10.Name,A4.Name) as 成品行产品名称,

--神奇的函数isnull,如果A10.name不在存,A10.name这一列就显示A4.name,如果存在,则显示本列

 

Convert(bigint,A4.[StoreUOMQty]) --把字符串转成bigint型

 

 

 CustomName包含客户的First Name和Last Name,它们之间被一个空格隔开。分析ContactName列的空格

位置,这样可以只显示这个列的last name部分。
   select top 5 substring(ContactName,charindex(' ',ContactName)+1,len(ContactName)) as [Last

Name] from customers
注: LTRIM ( character_expression )删除字符变量中的起始空格
    RTRIM ( character_expression ) 删除字符变量中的尾随空格


 计算Northwind.dbo.Customer表中Addresses字段中包含单词Road或者它的缩写Rd的记录数,选择语句

类似这样:
   select count(*) from Northwind.dbo.Customers where CHARINDEX('Rd',Address) > 0 or CHARINDEX

('Road',Address)> 0


 比如 titles表中有id,name ,age 3个字段,我想根据name字段来修改id字段,并且在id字段前面添加 

‘ ABC  ‘  
 UPDATE   表名   SET   id=STUFF(id,1,3,  ‘ abc  ‘ )   WHERE   name=  ‘ 名称  ‘  


 下例通过在第一个字符串 (abcdef) 中删除从第二个位置(字符 b)开始的三个字符,然后在删除的起

始位置插入第二个字符串,创建并返回一个字符串。
 SELECT STUFF('abcdef', 2, 3, 'ijklmn')
结果集: aijklmnef

LEFT ( character_expression , integer_expression ) 最左边的 5 个字符。
RIGHT ( character_expression , integer_expression ) 最右边的五个字符

REVERSE ( character_expression ) 返回字符表达式的反转。

 

 

 

select charindex('d','adfekadfleafe')
select substring('adfekadfleafe',4,4)
select reverse('abcd')
select LEFT('abcdefg',4)
select stuff('abcdefg',2,3,'xyz')
select ltrim('       abc def  ')
select rtrim('       abc def  ')
select cast('123' as bigint)
select case when ISNUMERIC('23')=1 then '数字' else '字符' end --判断参数是否可转为整数,浮点数等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值