菜鸟求教大虾:删除FullName下的“-”及“-”前面,“(”及“(”后面所有字段的脚本...

十月风023 2017-08-20 05:51:33
求教大虾,如题,万分感谢!
...全文
259 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
十月风023 2017-08-21
  • 打赏
  • 举报
回复
引用 11 楼 sinat_28984567 的回复:
[quote=引用 10 楼 qq_39830072 的回复:]
[quote=引用 9 楼 sinat_28984567 的回复:]
[quote=引用 8 楼 qq_39830072 的回复:]
[quote=引用 7 楼 sinat_28984567 的回复:]
[quote=引用 6楼我是你的主体 的回复:]

再测试,谢谢~
测试成功记得结贴[/quote]
测试时成功的,但需要具体脚本来执行修改的呢...请再赐教~[/quote]
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([FullName] nvarchar(37))
Insert #T
select N'abcd-测试截取内容(afadf' union all
select N'大白兔-奶糖' union all
select N'凉茶(加多宝)'
Go
--测试数据结束
UPDATE #T SET FullName = SUBSTRING(FullName, CHARINDEX('-', FullName) + 1,
CASE WHEN CHARINDEX('(', FullName) = 0 THEN LEN(FullName)
ELSE CHARINDEX('(', FullName)
END - CHARINDEX('-', FullName)
- CASE WHEN CHARINDEX('-', FullName) > 0
AND CHARINDEX('(', FullName) = 0 THEN 0
ELSE 1
END)
[/quote]

查出来只影响了3行的,但这边是需要修改列中所有类似名称,不好意思,真菜鸟一枚,费心了....[/quote]
……把这个语句换成楼主自己的表名和字段名就行了#T是我用来测试用的,一共三条数据,楼主的有多少数据会更新多少数据
UPDATE #T SET FullName =  SUBSTRING(FullName, CHARINDEX('-', FullName) + 1,
CASE WHEN CHARINDEX('(', FullName) = 0 THEN LEN(FullName)
ELSE CHARINDEX('(', FullName)
END - CHARINDEX('-', FullName)
- CASE WHEN CHARINDEX('-', FullName) > 0
AND CHARINDEX('(', FullName) = 0 THEN 0
ELSE 1
END)
[/quote]
二月十六 2017-08-21
  • 打赏
  • 举报
回复
试试这个,或者楼主贴一些有问题比较特殊的数据,我再改改
UPDATE #T SET FullName =  SUBSTRING(FullName, CHARINDEX('-', FullName) + 1,
                  CASE WHEN CHARINDEX('(', FullName) = 0 THEN LEN(FullName)
                       ELSE CHARINDEX('(', FullName)
                  END - CHARINDEX('-', FullName)
                  - CASE WHEN  CHARINDEX('(', FullName) = 0 THEN 0
                         ELSE 1
                    END) 
二月十六 2017-08-20
  • 打赏
  • 举报
回复
引用 10 楼 qq_39830072 的回复:
[quote=引用 9 楼 sinat_28984567 的回复:] [quote=引用 8 楼 qq_39830072 的回复:] [quote=引用 7 楼 sinat_28984567 的回复:] [quote=引用 6楼我是你的主体 的回复:] 再测试,谢谢~
测试成功记得结贴[/quote] 测试时成功的,但需要具体脚本来执行修改的呢...请再赐教~[/quote]
--测试数据
if not object_id(N'Tempdb..#T') is null
    drop table #T
Go
Create table #T([FullName] nvarchar(37))
Insert #T
select N'abcd-测试截取内容(afadf' union all
select N'大白兔-奶糖' union all
select N'凉茶(加多宝)'
Go
--测试数据结束
UPDATE #T SET FullName =  SUBSTRING(FullName, CHARINDEX('-', FullName) + 1,
                  CASE WHEN CHARINDEX('(', FullName) = 0 THEN LEN(FullName)
                       ELSE CHARINDEX('(', FullName)
                  END - CHARINDEX('-', FullName)
                  - CASE WHEN CHARINDEX('-', FullName) > 0
                              AND CHARINDEX('(', FullName) = 0 THEN 0
                         ELSE 1
                    END) 
[/quote] 查出来只影响了3行的,但这边是需要修改列中所有类似名称,不好意思,真菜鸟一枚,费心了....[/quote] ……把这个语句换成楼主自己的表名和字段名就行了#T是我用来测试用的,一共三条数据,楼主的有多少数据会更新多少数据
UPDATE #T SET FullName =  SUBSTRING(FullName, CHARINDEX('-', FullName) + 1,
                  CASE WHEN CHARINDEX('(', FullName) = 0 THEN LEN(FullName)
                       ELSE CHARINDEX('(', FullName)
                  END - CHARINDEX('-', FullName)
                  - CASE WHEN CHARINDEX('-', FullName) > 0
                              AND CHARINDEX('(', FullName) = 0 THEN 0
                         ELSE 1
                    END) 
十月风023 2017-08-20
  • 打赏
  • 举报
回复
引用 9 楼 sinat_28984567 的回复:
[quote=引用 8 楼 qq_39830072 的回复:] [quote=引用 7 楼 sinat_28984567 的回复:] [quote=引用 6楼我是你的主体 的回复:] 再测试,谢谢~
测试成功记得结贴[/quote] 测试时成功的,但需要具体脚本来执行修改的呢...请再赐教~[/quote]
--测试数据
if not object_id(N'Tempdb..#T') is null
    drop table #T
Go
Create table #T([FullName] nvarchar(37))
Insert #T
select N'abcd-测试截取内容(afadf' union all
select N'大白兔-奶糖' union all
select N'凉茶(加多宝)'
Go
--测试数据结束
UPDATE #T SET FullName =  SUBSTRING(FullName, CHARINDEX('-', FullName) + 1,
                  CASE WHEN CHARINDEX('(', FullName) = 0 THEN LEN(FullName)
                       ELSE CHARINDEX('(', FullName)
                  END - CHARINDEX('-', FullName)
                  - CASE WHEN CHARINDEX('-', FullName) > 0
                              AND CHARINDEX('(', FullName) = 0 THEN 0
                         ELSE 1
                    END) 
[/quote] 查出来只影响了3行的,但这边是需要修改列中所有类似名称,不好意思,真菜鸟一枚,费心了....
二月十六 2017-08-20
  • 打赏
  • 举报
回复
引用 8 楼 qq_39830072 的回复:
[quote=引用 7 楼 sinat_28984567 的回复:]
[quote=引用 6楼我是你的主体 的回复:]

再测试,谢谢~
测试成功记得结贴[/quote]
测试时成功的,但需要具体脚本来执行修改的呢...请再赐教~[/quote]
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([FullName] nvarchar(37))
Insert #T
select N'abcd-测试截取内容(afadf' union all
select N'大白兔-奶糖' union all
select N'凉茶(加多宝)'
Go
--测试数据结束
UPDATE #T SET FullName = SUBSTRING(FullName, CHARINDEX('-', FullName) + 1,
CASE WHEN CHARINDEX('(', FullName) = 0 THEN LEN(FullName)
ELSE CHARINDEX('(', FullName)
END - CHARINDEX('-', FullName)
- CASE WHEN CHARINDEX('-', FullName) > 0
AND CHARINDEX('(', FullName) = 0 THEN 0
ELSE 1
END)
十月风023 2017-08-20
  • 打赏
  • 举报
回复
引用 7 楼 sinat_28984567 的回复:
[quote=引用 6楼我是你的主体 的回复:] 再测试,谢谢~
测试成功记得结贴[/quote] 测试时成功的,但需要具体脚本来执行修改的呢...请再赐教~
二月十六 2017-08-20
  • 打赏
  • 举报
回复
引用 6楼我是你的主体 的回复:
再测试,谢谢~
测试成功记得结贴
十月风023 2017-08-20
  • 打赏
  • 举报
回复
再测试,谢谢~
二月十六 2017-08-20
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([FullName] nvarchar(37))
Insert #T
select N'abcd-测试截取内容(afadf' union all
select N'大白兔-奶糖' union all
select N'凉茶(加多宝)'
Go
--测试数据结束
SELECT SUBSTRING(FullName, CHARINDEX('-', FullName) + 1,
CASE WHEN CHARINDEX('(', FullName) = 0 THEN LEN(FullName)
ELSE CHARINDEX('(', FullName)
END - CHARINDEX('-', FullName)
- CASE WHEN CHARINDEX('-', FullName) > 0
AND CHARINDEX('(', FullName) = 0 THEN 0
ELSE 1
END) AS name
FROM #T;


十月风023 2017-08-20
  • 打赏
  • 举报
回复
是这样么? UPDATE dbo.ptype SET FullName=replace(FullName,left(FullName,CHARINDEX('-',FullName)),'') UPDATE dbo.ptype SET FullName=replace(FullName,right(FullName,CHARINDEX('[/,FullName)),'') 谢谢!
  • 打赏
  • 举报
回复
是替换的一部分 不是所有的值
十月风023 2017-08-20
  • 打赏
  • 举报
回复
非常感谢,但replace不行的... 是更新ptype表下的FullName列的内容: 例如: 更新“大白兔-奶糖”为“奶糖”,更新“凉茶(加多宝)”为“凉茶”, 也就是仅仅保留商品名称,不要商标注释...
  • 打赏
  • 举报
回复
replace(P1,LEFT(P1,CHARINDEX('-',P1)),'') 后面那个方法类似

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧