Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未使用T-SQL从函数中获取所需输出_Sql_Sql Server_Function_Tsql - Fatal编程技术网

未使用T-SQL从函数中获取所需输出

未使用T-SQL从函数中获取所需输出,sql,sql-server,function,tsql,Sql,Sql Server,Function,Tsql,我使用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) @areacod

我使用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');  
(@phoneno作为nvarchar)
将仅生成第一个字符

试一试

但是,拆分可能不是必需的

尝试以下方法。这可能更有效

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

Select left(replace(replace(replace(@S,'-',''),'(',''),')',''),3)
(@phoneno作为nvarchar)
将仅生成第一个字符

试一试

但是,拆分可能不是必需的

尝试以下方法。这可能更有效

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

Select left(replace(replace(replace(@S,'-',''),'(',''),')',''),3)
LEFT(@phoneno,PATINDEX('%-%,@phoneno)-1)
还可以在第一个
-
LEFT(@phoneno,PATINDEX('%-%,@phoneno)-1)
还可以在第一个
-