mysql获取字符串的ascii代码转储

时间:2012-03-29 16:16:36

标签: mysql

在MySQL中,有一种简单的SELECT方法可以为varchar值中的每个字符获取一系列ASCII码/代码点吗?我对Oracle更熟悉,它具有可用于此的DUMP函数。

例如,select some_function('abcd')会返回类似96,97,98,99的内容?

3 个答案:

答案 0 :(得分:7)

这是我在MySQL中所知道的最接近的等价物:

mysql> select hex('abcd');
+-------------+
| hex('abcd') |
+-------------+
| 61626364    |
+-------------+
1 row in set (0.00 sec)

答案 1 :(得分:0)

我不知道会有这样做的mysql_function,但你可以在php中取字符串,转换为数组,然后取字符的序数。

   $char_value_array = {};
    foreach($mysql_fetched_str as $char)
        array_push($char_value_array, ord($char)

答案 2 :(得分:0)

您可以创建如下函数:

CREATE FUNCTION dump (s CHAR(20)) RETURNS CHAR(50) DETERMINISTIC 
BEGIN
DECLARE result CHAR(50);
DECLARE i INT;
DECLARE l INT;

SET result = ASCII(SUBSTRING(s,1,1));
SET l = LENGTH(s);
SET i = 2;
WHILE (i <= l) DO 
    SET result = CONCAT(result, ',', ASCII(SUBSTRING(s,i,1)));
    SET i = i + 1;  
END WHILE;

RETURN result;
END;

然后在SELECT中使用它:

SELECT dump('abcd') FROM test LIMIT 1

如果需要使用更长的字符串,请增加CHAR(20)和CHAR(50)定义。