Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL数据库上操作字符串_Mysql_String_Manipulate - Fatal编程技术网

在MySQL数据库上操作字符串

在MySQL数据库上操作字符串,mysql,string,manipulate,Mysql,String,Manipulate,我有以下字符串:X322-1-381128和X322-1-383128 我需要操纵这些字符串以获取输出: X322138128和X322138328 我尝试了这个解决方案,但很成功,因为输出结果只有:X322138128 你能帮我吗 mysql> SELECT 'X322-1-381128' string, SUBSTRING_INDEX('X322-1-381128', '-', 1) a, SUBSTRING('X322-1-381128', 6, 1) b,

我有以下字符串:
X322-1-381128
X322-1-383128

我需要操纵这些字符串以获取输出:

X322138128
X322138328

我尝试了这个解决方案,但很成功,因为输出结果只有:
X322138128

你能帮我吗

mysql> SELECT
    'X322-1-381128' string,
    SUBSTRING_INDEX('X322-1-381128', '-', 1) a,
    SUBSTRING('X322-1-381128', 6, 1) b,
    SUBSTRING('X322-1-381128', 8, 2) c,
    SUBSTRING('X322-1-381128' ,- 3) d,
    CONCAT(
        SUBSTRING_INDEX('X322-1-381128', '-', 1),
        SUBSTRING('X322-1-381128', 6, 1),
        SUBSTRING('X322-1-381128', 8, 2),
        SUBSTRING('X322-1-381128' ,- 3)
    ) output,
    'X322-1-383128' string,
    SUBSTRING_INDEX('X322-1-381128', '-', 1) a,
    SUBSTRING('X322-1-381128', 6, 1) b,
    SUBSTRING('X322-1-381128', 8, 2) c,
    SUBSTRING('X322-1-381128' ,- 3) d,
    CONCAT(
        SUBSTRING_INDEX('X322-1-383128', '-', 1),
        SUBSTRING('X322-1-383128', 6, 1),
        SUBSTRING('X322-1-383128', 8, 2),
        SUBSTRING('X322-1-383128' ,- 3)
    ) output;
+---------------+------+---+----+-----+------------+---------------+------+---+----+-----+------------+
| string        | a    | b | c  | d   | output     | string        | a    | b | c  | d   | output     |
+---------------+------+---+----+-----+------------+---------------+------+---+----+-----+------------+
| X322-1-381128 | X322 | 1 | 38 | 128 | X322138128 | X322-1-383128 | X322 | 1 | 38 | 128 | X322138128 |
+---------------+------+---+----+-----+------------+---------------+------+---+----+-----+------------+
1 row in set
使用
替换('X322-1-381128','-')

看起来您的最后一个子字符串是错误的。要删除所有
-
和最后第三个数字:

SELECT
  'X322-1-381128' string,
  SUBSTRING_INDEX('X322-1-381128', '-', 1) a,
  SUBSTRING('X322-1-381128', 6, 1) b,
  SUBSTRING('X322-1-381128', 8, 2) c,
  CONCAT(SUBSTRING('X322-1-381128' ,-4,1), SUBSTRING('X322-1-381128' ,-2)) d,
  CONCAT(
    SUBSTRING_INDEX('X322-1-381128', '-', 1),
    SUBSTRING('X322-1-381128', 6, 1),
    SUBSTRING('X322-1-381128', 8, 2),
    SUBSTRING('X322-1-381128' ,- 3)
  ) output,

  'X322-1-383128' string,
  SUBSTRING_INDEX('X322-1-383128', '-', 1) a,
  SUBSTRING('X322-1-383128', 6, 1) b,
  SUBSTRING('X322-1-383128', 8, 2) c,
  CONCAT(SUBSTRING('X322-1-383128' ,-4,1), SUBSTRING('X322-1-383128' ,-2)) d,
  CONCAT(
    SUBSTRING_INDEX('X322-1-383128', '-', 1),
    SUBSTRING('X322-1-383128', 6, 1),
    SUBSTRING('X322-1-383128', 8, 2),
    SUBSTRING('X322-1-383128' ,-4,1),
    SUBSTRING('X322-1-383128' ,-2)
  ) output;
由于字符串操作非常静态,因此也可以使用以下更简单的解决方案:

SELECT 'X322-1-381128' string,
  CONCAT(LEFT(REPLACE('X322-1-381128', '-', ''), 8), RIGHT(REPLACE('X322-1-381128', '-', ''), 2))
UNION ALL
SELECT 'X322-1-383128' string,
  CONCAT(LEFT(REPLACE('X322-1-383128', '-', ''), 8), RIGHT(REPLACE('X322-1-383128', '-', ''), 2))

选择替换('X322-1-381128','-','')感谢您的回复,但输出必须包含10个字符,而输入是11个字符,仅替换是不够的