我使用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');  

#1楼 票数:4 已采纳

(@phoneno as nvarchar)将仅生成第一个字符

尝试

(@phoneno as nvarchar(50))

但是,可能不需要拆分

尝试以下方法。 可能表现更好

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

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

  ask by Jay Desai translate from so

未解决问题?本站智能推荐:

2回复

使用T-SQL运行函数时出错

我使用 T-SQL 创建了小表值函数,该函数将一个输入参数电话号码作为并从中返回区号。 函数编译成功,但运行时出现错误: Msg 4121, Level 16, State 1, Line 1776 找不到列“dbo”或用户定义的函数或聚合“dbo.getareacode1”,或者名称不明确参考
1回复

从自定义T-SQL函数返回Varchar[关闭]

我想从我定义如下的函数返回一个简单的varchar值: 应该返回已下订单#1063609但失败的客户的客户类型
1回复

当用作IN子查询时,T-SQL表函数不返回行

我具有以下TSQL Table函数,当其本身用作查询时,该函数完全按要求工作: ...当作为基本查询执行时: ....但是当我尝试将该函数用作子查询的一部分时,即使是非常简单的子查询,也不会返回任何行。 谁能阐明为什么? 我不明白在IN子查询中有什么不同,这意味着它不起作用?
2回复

功能无法重现我的期望

这只会返回NULL 。 应该剥夺特别宪章。 任何想法为什么它不起作用? 谢谢你的帮助。
2回复

SQL函数遍历表

我是tSQL函数的新手,正在尝试执行以下操作: 我有一个像这样的表叫做Projects: 而且我想创建一个SQL函数以产生以下查询结果: 我想出了以下功能: 但是它运行时似乎处于无限循环中。 有人对实现相同结果有任何想法或更好的方法吗? 提前致谢。
1回复

SQL函数忽略特定条件

我经常编写在WHERE语句中具有重复几行的SQL脚本,以消除记录。 例如: 如果我不必每次都添加这些行,则不太容易出错。 我如何创建一个函数来代替我呢?: 这是我目前拥有的: 但是我觉得我缺少重要的东西。 该函数仅提供我认为对Field1有效的值。 所以我未来的脚本应该是:
2回复

SQL函数返回所有行的总和值

我有两个表,作业表和项目表。 我创建了一个函数,试图为每个作业返回客户价格的总和。 而是返回所有作业的总和。 以下是我创建的函数: 如果可以的话,我想获得每个工作的客户价格的总和,而不是所有工作的总和。 如果有人可以帮助我,我将不胜感激。 谢谢
2回复

SQL-创建将表变量作为输入的函数

我在编写一个将表变量作为输入并返回该表中的总行数的函数时遇到了麻烦。 这是我的尝试: