【发布时间】:2015-03-03 07:07:45
【问题描述】:
我有一个 varchar 列,其中包含以下字符串的变体:
Stations, FlightName, FlightWeeks, BindTo, SpotLength, foo, bar, etc...
我需要将其更改为 Stations 到 Station、FlightName 到 Flight Name、BindTo 到 Bind To 等最终变成这样:
Station; Flight Name; Weeks; Bind To; Spot Length; foo; bar 等
我有一个非常丑陋的代码来做到这一点:
select replace(replace(replace(replace(replace(replace(GroupFlightsBy, ', ', ';'),
'Stations', 'Station'), 'FlightName', 'Flight Name'), 'FlightWeeks', 'Weeks'), 'BindTo', 'Bind To'),
'SpotLength', 'Spot Length')
有没有更好的方法来做到这一点,但性能更好?
【问题讨论】:
-
首先想到的不是字符串替换;但听起来您是在 varchar 列中合并数据,而不是使用单独的列。这些值是什么意思?
-
@SimonSvensson 基本上这些是多选下拉框中的值。数据已经存在 - 我无法更改它。
-
为什么不能更改数据库?它是否存储在某些只读媒体上?或者您是说您作为开发人员并假定在开发过程中最了解情况,却没有进行更改的权限? (主要问题;数据库总是可以更改的;不更改的要求通常是从某个人性化的地方强加的。)
-
@AngryHacker 所以你要处理固定数量的数据(如 Stations、FlightName 等),对吧?
-
@SelvaTS 是的,固定数据。
标签: sql sql-server