使用 sql UPDATE 查询更改字符串

Change string with sql UPDATE query

问题

如何将以下代码从 SGC1-0001[ 更改为 SGC1-001

table 是 stations,第 code 列。 我需要使用更新查询,但不确定如何使用它。

该列中还有更多记录,略有不同,但我应该可以通过示例来解决。

示例数据

我想分块做,但不是一次一个。

SGC1-0001[
SGC1-0002[
..
SGC1-0019[
SGC1-0021[
SGC2-0001[
SGC2-0002[
..
SGC2-0016[
SGC2-0017[
SGC3-0003[
SGC3-0004[
...
SGC4-0018[
SGC4-0021[
SGC4-0022[
SGC4-0025[
SGC4-0029[

逻辑(伪代码)

Delete first 0 and last [ from all

试试这个,更新查询

因为你所有的代码最后都有'['所以你可以使用这个查询。它将从所有记录

中删除 '-' 之后的最后一个 '[' 和第一个 0
UPDATE stations
SET  CODE = LEFT(replace(code,right(code,1),''),4) + '-'+
            RIGHT(RIGHT(replace(code,right(code,1),''),4),3)

它将取代 SGC1-0029[SGC1-029SGC1-0001[SGC1-001

最好参考一些sql基础tutorials

如果您想要 trim 该列中所有记录的最后一个字符并删除前导 0,以下应该可以解决问题:

UPDATE stations 
SET    code = REPLACE(LEFT(code, LEN(code) - 1), '-0', '-')

如果您只想替换前导 0,则应执行以下操作:

UPDATE stations 
SET    code = REPLACE(code, '-0', '-')

此外,您可能对以下内容感兴趣:

String Functions