gpt4 book ai didi

mysql - SQL查询字符串按分隔符分割

转载 作者:行者123 更新时间:2023-11-29 18:03:43 25 4
gpt4 key购买 nike

我有一个查询,它返回一个像年月信息一样存储的字段。因此,数据示例是 2018 年二月整页。我需要将其按“-”值分割,这样我将得到三列,而不是仅返回一列。

年月文本
2018年2月整页

文本的格式不固定,必须使用“-”符号,并且数据将始终以这种方式拆分。如何轻松做到这一点?

编辑:

这是我的代码

声明@Str varchar(80)

选择@Str = IPDesc来自 vw_MRA_AdContracts

声明 @first_dash int = CharIndex('-', @Str, 1)声明 @last_dash int = CharIndex('-', Reverse(LTrim(Rtrim(@Str))))

选择 profileid、OrgName、@Str、

Substring(@Str, 1, @first_dash-1) as AdYear, 
Substring(@Str, @first_dash+1, Len(@Str)-@first_dash-@last_dash) as AdMonth,
Substring(@Str, @last_dash+@first_dash, Len(@Str)) as AdSold,

来自 vw_MRA_AdContracts

问题在于,变量看起来没有循环遍历所有可用记录并获取一条记录,然后拆分该记录。因此,对于 AdYear、AdMonth 和 AdSold,我为每个返回记录获得完全相同的值,即使它与该记录的值不匹配。

最佳答案

另一种方法是使用此查询。查询中的 CONCAT 是为了防止在 STRING 少于 3 个参数时出现错误结果,并且对于第一个参数(年份)来说,第一个 SUBSTRING_INDEX 不是必需的。

您只需更改表中字段的字符串即可。

SELECT
SUBSTRING_INDEX( SUBSTRING_INDEX( CONCAT("2018-Jan-Hello",'--'), '-', 1),'-',-1) AS 'Year',
SUBSTRING_INDEX( SUBSTRING_INDEX( CONCAT("2018-Jan-Hello",'--'), '-', 2),'-',-1) AS 'Month',
SUBSTRING_INDEX( SUBSTRING_INDEX( CONCAT("2018-Jan-Hello",'--'), '-', 3),'-',-1) AS 'Text';

示例

MariaDB [(none)]> SELECT
-> SUBSTRING_INDEX( SUBSTRING_INDEX( CONCAT("2018-Jan-Hello",'--'), '-', 1),'-',-1) AS 'Year',
-> SUBSTRING_INDEX( SUBSTRING_INDEX( CONCAT("2018-Jan-Hello",'--'), '-', 2),'-',-1) AS 'Month',
-> SUBSTRING_INDEX( SUBSTRING_INDEX( CONCAT("2018-Jan-Hello",'--'), '-', 3),'-',-1) AS 'Text';
+------+-------+-------+
| Year | Month | Text |
+------+-------+-------+
| 2018 | Jan | Hello |
+------+-------+-------+
1 row in set (0.00 sec)

MariaDB [(none)]>
MariaDB [(none)]> SELECT
-> SUBSTRING_INDEX( SUBSTRING_INDEX( CONCAT("2018-Jan",'--'), '-', 1),'-',-1) AS 'Year',
-> SUBSTRING_INDEX( SUBSTRING_INDEX( CONCAT("2018-Jan",'--'), '-', 2),'-',-1) AS 'Month',
-> SUBSTRING_INDEX( SUBSTRING_INDEX( CONCAT("2018-Jan",'--'), '-', 3),'-',-1) AS 'Text';
+------+-------+------+
| Year | Month | Text |
+------+-------+------+
| 2018 | Jan | |
+------+-------+------+
1 row in set (0.00 sec)

MariaDB [(none)]>

关于mysql - SQL查询字符串按分隔符分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48102346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com