right('1234',2)//34 从右边起取两位
left('1234',2)//12 从左边起取两位
stuff('abc',1,2,'d')//dc 从第一位起,删除2个,再添加d
NULLIF ( expression , expression )//如果两个表达式不相等,NULLIF 返回第一个 expression 的值。如果相等,NULLIF 返回第一个 expression 类型的空值。
COALESCE()//返回其参数中的第一个非空表达式
1.
DECLARE @T TABLE
(
tid INT
)
INSERT INTO @T
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4
DECLARE @sql VARCHAR(50)
SET @sql=''
SELECT @sql=@sql+','+CAST(tid AS VARCHAR(4)) FROM @T
PRINT right(@sql,LEN(@sql)-1)
//执行结果
(4 行受影响)
1,2,3,4
2.
DECLARE @T TABLE
(
tid INT
)
INSERT INTO @T
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4
DECLARE @sql VARCHAR(50)
SET @sql=''
SELECT @sql=@sql+','+CAST(tid AS VARCHAR(4)) FROM @T
select stuff(@sql,1,1,'')
//执行结果
无列名
无列名 | |
1 |
1,2,3,4 |
3.
CREATE TABLE budgets
(
dept tinyint IDENTITY,
current_year decimal NULL,
previous_year decimal NULL
)
INSERT budgets VALUES(100000, 150000)
INSERT budgets VALUES(NULL, 300000)
INSERT budgets VALUES(0, 100000)
INSERT budgets VALUES(NULL, 150000)
INSERT budgets VALUES(300000, 250000)
insert budgets values(null,0)
GO
SET NOCOUNT OFF
SELECT avg(NULLIF(COALESCE(current_year,previous_year), 0.00)) AS 'Average Budget' FROM budgets
Average Budget
----------------------------------------
212500.000000