在MySQL中,有一种简单的SELECT
方法可以为varchar
值中的每个字符获取一系列ASCII码/代码点吗?我对Oracle更熟悉,它具有可用于此的DUMP函数。
例如,select some_function('abcd')
会返回类似96,97,98,99
的内容?
答案 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)定义。