昨天做一个前台显示,就是数据库有4个字段都是int型,需要前台把它们合成一个字段输出。本来想着在数据库在加一列,后来有人提议用标量值函数,发现这样挺好的。拿来分享一下。
首先新建查询复制下面代码
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE FUNCTION [dbo].[FormatLocationName](@rack INT,@floor INT,@position INT,@bit INT)
- RETURNS VARCHAR(100)
- AS
- BEGIN
- DECLARE @strRack VARCHAR(100),@strFloor Varchar(100),@strPosition VARCHAR(100),@strBit varchar(100)
- DECLARE @strRetrun VaRCHAR(100)
- IF(@rack < 10)
- BEGIN
- --IF(@rack < 10)
- SET @strRack = '0' + CONVERT(VARCHAR(2),@rack)
- --ELSE
- -- SET @strRack = CONVERT(VARCHAR(2),@rack)
- END
- ELSE
- SET @strRack = CONVERT(VARCHAR(50),@rack)
- SET @strFloor = CONVERT(VARCHAR(2),@floor)
- IF(@position < 10)
- BEGIN
- --IF(@position < 10)
- --SET @strPosition = '00' + CONVERT(VARCHAR(2),@position)
- --ELSE IF(@position < 100)
- SET @strPosition = '0' + CONVERT(VARCHAR(2),@position)
- --ELSE
- --SET @strPosition = CONVERT(VARCHAR(2),@position)
- END
- ELSE
- SET @strPosition = CONVERT(VARCHAR(50),@position)
- set @strBit=CONVERT(VARCHAR(2),@bit)
- SET @strRetrun = @strRack + '-' + @strFloor + '-' + @strPosition+'-'+@strBit
- RETURN @strRetrun
- END
然后
- SELECT dbo.FormatLocationName([row], [floor], [line], [bit]) as LocationName,[row], [floor], [line], [bit]FROM [storeinfo]
就可以实现不用创建新列就可以组装原有数据库数据了。
http://hi.baidu.com/zwfec/blog/item/91b5bb350c11c198a71e12ed.html