昨天做乙個前台顯示,就是資料庫有4個字段都是int型,需要前台把它們合成乙個字段輸出。本來想著在資料庫在加一列,後來有人提議用標量值函式,發現這樣挺好的。拿來分享一下。
首先新建查詢複製下面**
code:
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)
asbegin
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)
endelse
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)
endelse
set @strposition = convert(varchar(50),@position)
set @strbit=convert(varchar(2),@bit)
set @strretrun = @strrack + '-' + @strfloor + '-' + @strposition+'-'+@strbit
return @strretrun
end
然後code:
select dbo.formatlocationname([row], [floor], [line], [bit]) as locationname,[row], [floor], [line], [bit]from [storeinfo]
就可以實現不用建立新列就可以組裝原有資料庫資料了。
SQL 標量值函式的呼叫
呼叫 ms sql 標量值函式,應該在函式前面加上 dbo.否則會報 不是可以識別的 內建函式名稱 錯誤。例如 declare whichdb tinyint select whichdb dbo.user getwhichdb 1 看看是哪個資料庫的 另外,標量值函式就相當於乙個變數,而不是乙個表...
sql的標量值函式例子
1.分割字串,處理某個字元第幾次出現獲取後面的值use ef go object userdefinedfunction dbo f substr script date 10 27 2014 20 36 10 set ansi nulls on goset quoted identifier on...
SQL錶值函式和標量值函式的區別
原文 sql錶值函式和標量值函式的區別 寫sql儲存過程經常需要呼叫一些函式來使處理過程更加合理,也可以使函式復用性更強,不過在寫sql函式的時候可能會發現,有些函式是在錶值函式下寫的有些是在標量值下寫的,區別是錶值函式只能返回乙個表,標量值函式可以返回基型別。舉個例子,當使用者刪除乙個節點的時候,...