我有IT背景,但更多地参与PO / PM类型的角色,但我正在接受MySQL并有一个问题。我正在尝试解析文本并遇到以下问题。
我有一个由0000000000XXXXXXXXXX0000000000
组成的字符串。零表示0-9
和5
位置之间的数值(10
)(变化),XXXXXXXXXX
表示始终10
位置的字符集,由A-Z
和0-9
组成,但始终以一个字母A-Z
开头。
我想将此字符串解析为10
个字符。使用修剪,定位,中等等似乎很难。有人可以帮忙吗?
答案 0 :(得分:0)
你最好在你的客户端代码(php,python,你有什么)中进行这种解析,但如果你绝对需要在MySQL中这样做,你可以创建一个类似于这个的函数
DELIMITER //
CREATE FUNCTION parse_str(val VARCHAR(30)) RETURNS VARCHAR(10)
BEGIN
DECLARE pos INT DEFAULT 6;
IF val IS NULL OR CHAR_LENGTH(val) < 15 THEN
RETURN NULL;
END IF;
WHILE pos < 12 DO
IF SUBSTRING(val, pos, 1) > '9' THEN
RETURN SUBSTRING(val, pos, 10);
END IF;
SET pos = pos + 1;
END WHILE;
RETURN NULL;
END//
DELIMITER ;
然后您可以像这样使用它
SELECT parse_str(val) AS parsed
FROM table1
以下是SQLFiddle演示
答案 1 :(得分:-1)
你没有说是否修剪&#39;是在INSERT或SELECT方面发生的。
DOCS是一个值得关注的好地方。
你可以改善你的问题,然后让“答案者”#39;知道edite并在他们的回答下面留下评论?