2017-08-15 64 views
0

我使用T-SQL創建了一個小函數,它將一個輸入參數作爲電話號碼並從中返回區號。函數編譯成功,但只獲得電話號碼的第一位數字而不是三位數字。沒有從使用T-SQL的函數獲取慾望輸出

請參閱下面的代碼: -

create or alter function getareacode (@phoneno as nvarchar) 
returns nvarchar(10) 
with schemabinding 
as 
begin 
    declare @areacode as nvarchar(10); 
    select top(1) @areacode = value from string_split(@phoneno,'-'); 
    return @areacode; 
end; 

select dbo.getareacode(N'123-456-789'); 
+0

'LEFT(@phoneno,PATINDEX( '% - %',@phoneno)-1)'也可以讓你之前的所有第一'-' –

回答

4

(@phoneno as nvarchar)將產生第一個字符只有

嘗試

(@phoneno as nvarchar(50)) 

然而,拆分可能沒有必要

請嘗試以下。這可能是更好的性能

Declare @S nvarchar(50) = '123-456-789' 

Select left(replace(replace(replace(@S,'-',''),'(',''),')',''),3)