SQL Server 函数

SQL Server (Transact-SQL) STUFF() 函数在字符串中的指定位置插入一定数量字符的子字符串。

如果指定的位置不在字符串的长度范围内,则该函数将返回空字符串。如果 length 为负数,则返回空字符串。如果length比字符串长,则删除直到字符串中的最后一个字符。如果length为零,则插入发生在position位置,并且不会删除任何字符。

语法

STUFF(string, position, length, substring) 

    参数

    string必填。 指定要修改的字符串。
    position必填。 指定字符串中插入子字符串的位置。
    length必填。 指定字符串中要替换的字符数。
    substring必填。 指定要插入到字符串中的子字符串。

    返回值

    返回修改后的值.

    示例 1:

    下面的示例展示了 STUFF() 函数的用法。

    SELECT STUFF('Learning SQL is fun', 10, 3, 'SQL Server');
    Result: 'Learning SQL Server is fun'
    
    SELECT STUFF('abcxyz', 4, 3, 'def');
    Result: 'abcdef'
    
    SELECT STUFF('ABCPQR', 4, 3, 'abc');
    Result: 'ABCabc' 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    示例 2:

    考虑一个名为 Employee 的数据库表,其中包含以下记录:

    EmpIDNameCitySalary
    FIN001JohnLondon3000
    FIN002MarryNew York2750
    FIN003JoParis2800
    FIN004KimAmsterdam3100
    FIN005RameshNew Delhi3000
    FIN006HuangBeijing2800

    在下面的查询中,STUFF() 函数用于更改 Employee 表的 EmpID 列的记录:

    UPDATE Employee SET EmpID = STUFF(EmpID, 1, 3, 'FINCAD');
    
    -- 查看结果
    SELECT * FROM Employee; 
    • 1
    • 2
    • 3

    这将产生以下结果:

    EmpIDNameCitySalary
    FINCAD001JohnLondon3000
    FINCAD002MarryNew York2750
    FINCAD003JoParis2800
    FINCAD004KimAmsterdam3100
    FINCAD005RameshNew Delhi3000
    FINCAD006HuangBeijing2800