You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

T-SQL使用substring格式化手机号报错:参数2数据类型varchar无效

T-SQL手机号分段格式化报错解决

报错场景

给手机号添加-分隔符实现123-456-789样式分段时,执行代码触发如下错误:

Argument data type varchar is invalid for argument 2 of substring function.

当前使用T-SQL环境开发,曾尝试替换为MID函数实现相同逻辑但执行失败,原有报错代码如下:

declare @tel nvarchar(20) = 123456789
set @tel = (select left (@tel, '3'))+'-'+(select substring (@tel, '4','3'))+'-'+(select right (@tel, '3'))
select @tel

错误原因

  • 核心问题是字符串函数参数类型错误:T-SQL中LEFT、SUBSTRING、RIGHT的截取长度、起始位置参数必须为整数类型,原代码传入的'3'、'4'是带单引号的字符串值,无法被函数识别为合法的位置参数,直接触发类型无效报错。
  • T-SQL原生不提供MID函数,该函数是MySQL、Access等数据库的语法,替换后自然无法正常运行。
  • 代码存在不规范写法:@tel定义为字符串类型,初始赋值123456789未加单引号属于数值类型隐式转换;字符串拼接不需要嵌套多层SELECT子查询,属于冗余写法。

修复方案

修正参数类型、规范写法后的代码如下,执行后可直接得到预期的分段格式:

DECLARE @tel NVARCHAR(20) = '123456789'
SET @tel = LEFT(@tel, 3) + '-' + SUBSTRING(@tel, 4, 3) + '-' + RIGHT(@tel, 3)
SELECT @tel

执行返回结果为123-456-789,符合格式化要求。

内容的提问来源于stack exchange,提问作者Ratoshi Kaguya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:24:20