首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Server 2019中裁剪nvarchar参数

在Server 2019中裁剪nvarchar参数
EN

Stack Overflow用户
提问于 2022-03-11 18:35:30
回答 1查看 60关注 0票数 1

我有一个存储过程,它向我的一个参数发送一个字符串。

代码语言:javascript
运行
复制
@deliveryName [nvarchar](255)

有时交付名称可以是“传递示例1",有时也可以是”传递方法-交付示例1“,也可以是”其他东西-交付示例1“。

这不能在它到达存储过程之前进行编辑,是否有一种安全的方法可以在第一个“--”纯粹在sql服务器MSSQL中删除之前的所有内容?我要说的是,在传递名称中存在多重"-“的情况下,是否有一种安全的方法。例如,“交付方法-交付示例- 2”,我只希望它输出“传递示例- 2”。

到目前为止,我所观察到的每一个地方都在说,当(像这样的)时候使用一个案例。

代码语言:javascript
运行
复制
CASE
    WHEN str LIKE ',%,' THEN SUBSTRING(str, 2, LEN(str)-2)
    WHEN str LIKE ',%'  THEN RIGHT(str, LEN(str)-1)
    WHEN str LIKE '%,'  THEN LEFT(str, LEN(str)-1)
    ELSE str
END

对于每一种可能的情况,但是每天都有新的方法,所以这很难跟上。

EN

回答 1

Stack Overflow用户

发布于 2022-03-11 19:41:33

对于没有“-”的名称,可以在DeliveryName变量中添加“-”,获取“-”的第一次出现的索引,并将字符串放在该索引的右边。

代码语言:javascript
运行
复制
SELECT RIGHT(DeliveryName, CHARINDEX('-', DeliveryName+'-')+2) FROM #Temp

CREATE TABLE #Temp ( DeliveryName NVARCHAR(255))

INSERT INTO #Temp VALUES ('Delivery example-1')
INSERT INTO #Temp VALUES ('Delivery method - Delivery example 1 ')
INSERT INTO #Temp VALUES (' something else - Delivery example 1')
INSERT INTO #Temp VALUES (' Delivery method - Delivery example - 2')

SELECT RIGHT(DeliveryName, CHARINDEX('-', DeliveryName+'-')+2) FROM #Temp

output
--------------------------------------------------------
(No column name)
Delivery example 1
Delivery example 1 
Delivery example 1 
Delivery example - 2
Delivery example-1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71443211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档