2017-08-15 7 views
0

T-SQLを使用して1つの入力パラメータを電話番号として受け取り、市外局番を返す小さな関数を作成しました。関数は正常にコンパイルされますが、3桁ではなく1桁目の電話番号のみを取得します。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よりパフォーマンスかもしれ –

答えて

4

(@phoneno as nvarchar) 1文字目だけ

しかし、分割が

必要ではないかもしれない

(@phoneno as nvarchar(50)) 

を試すには、以下を試してみて生成されます。 。 `また、最初の前に`あなたのすべてを取得することができます - (-1)@phoneno、 '%%'(PATINDEX、@phoneno)-`それは

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

Select left(replace(replace(replace(@S,'-',''),'(',''),')',''),3) 
関連する問題