Mysql replace()concat()和substr()在字符串中的特定位置添加字符无法获得正确的位置
最终结果:应合并所有3个字段(确定),并将字符“T”添加为合并字符串中的第5个字符(不应删除或按顺序更改其他字符)。(请参阅下面的所有细节) 我做错了什么 数据采用以下格式:Mysql replace()concat()和substr()在字符串中的特定位置添加字符无法获得正确的位置,mysql,sql,Mysql,Sql,最终结果:应合并所有3个字段(确定),并将字符“T”添加为合并字符串中的第5个字符(不应删除或按顺序更改其他字符)。(请参阅下面的所有细节) 我做错了什么 数据采用以下格式: replace(concat(b.data1, substr(b.data2, 4, 1), 'T', substr(b.data2, 1), b.data3), ' ', '') AS MergedData AL33T0230S0440ESW 数据1:AL 数据2:33 0
replace(concat(b.data1,
substr(b.data2, 4, 1),
'T',
substr(b.data2, 1),
b.data3), ' ', '')
AS MergedData
AL33T0230S0440ESW
数据1:AL
数据2:33 0230S 0440E
数据3:SW
这是我当前的sql:
replace(concat(b.data1,
substr(b.data2, 4, 1),
'T',
substr(b.data2, 1),
b.data3), ' ', '')
AS MergedData
AL33T0230S0440ESW
最终输出应如下所示:
replace(concat(b.data1,
substr(b.data2, 4, 1),
'T',
substr(b.data2, 1),
b.data3), ' ', '')
AS MergedData
AL33T0230S0440ESW
AL33T0230S0440ESW
我已经能够将“T”放置在随机位置,但无法将其作为字符串开头的第5个字符持续添加。随机位置似乎很奇怪,但这似乎可行
replace(concat(b.data1,
substr(b.data2, 1, 2),
'T',
substr(b.data2, 4),
b.data3), ' ', '')
演示。随机位置似乎很奇怪,但这似乎有效
replace(concat(b.data1,
substr(b.data2, 1, 2),
'T',
substr(b.data2, 4),
b.data3), ' ', '')
演示。使用:
- 仅在data2上替换(因为这是唯一需要它的字段),然后
- concat()将所有内容连接起来,最后
- 插入
T
set @data1 := 'AL', @data2 := '33 0230S 0440E', @data3 := 'SW';
select
insert(concat(@data1, replace(@data2, ' ', ''), @data3), 5, 0, 'T')
as MergedData;
输出:
+-------------------+
| MergedData |
+-------------------+
| AL33T0230S0440ESW |
+-------------------+
使用:
- 仅在data2上替换(因为这是唯一需要它的字段),然后
- concat()将所有内容连接起来,最后
- 插入
T
set @data1 := 'AL', @data2 := '33 0230S 0440E', @data3 := 'SW';
select
insert(concat(@data1, replace(@data2, ' ', ''), @data3), 5, 0, 'T')
as MergedData;
输出:
+-------------------+
| MergedData |
+-------------------+
| AL33T0230S0440ESW |
+-------------------+
在
data2
中找到第一个空格的位置,将其替换为T
,删除结果字符串中的其余空格,然后将其与其他两个值连接起来:
CONCAT(
b.data1,
REPLACE(INSERT(b.data2, LOCATE(' ', b.data2), 1, 'T'), ' ', ''),
b.data3
) AS MergedData
在
data2
中找到第一个空格的位置,将其替换为T
,删除结果字符串中的其余空格,然后将其与其他两个值连接起来:
CONCAT(
b.data1,
REPLACE(INSERT(b.data2, LOCATE(' ', b.data2), 1, 'T'), ' ', ''),
b.data3
) AS MergedData