MySQL中的字符串格式

时间:2009-03-11 07:48:57

标签: mysql sql formatting format

在MySQL中是否有类似printf()的格式? 我在文档中找不到简单明了的方法。

例如,我该如何制作:

SELECT STRFORMATFUNCTIONIMLOOKINGFOR("%03d", 17) 

得到017?

5 个答案:

答案 0 :(得分:5)

对于您的示例,您可以使用

SELECT LPAD(17,3,'0');

还有

SELECT FORMAT(17,3); - 17.000

否则,UDF如上所述。

答案 1 :(得分:3)

也许它会有用:

select lpad(1, 2, '0') str;
+-----+
| str |
+-----+
| 01  | 
+-----+
select lpad(11, 2, '0') str;
+-----+
| str |
+-----+
| 11  | 
+-----+

答案 2 :(得分:2)

参见FORMAT()函数:

mysql> SELECT FORMAT(12332.123456, 4);
returns '12,332.1235'

但它只用于格式化浮点数。

答案 3 :(得分:2)

-- 
-- Autor: Ivan Sansão.
-- 
-- Função para formatar strings.
-- Exemplo: select mask("0123456789","(##) ####-####");
-- Retorna: (01) 2345-6789

CREATE FUNCTION mask(texto VARCHAR(255), mascara VARCHAR(255)) RETURNS VARCHAR(255) CHARSET latin1
    Begin

        -- Contém o texto processado.
        DECLARE textoProcessado VARCHAR(255);
        SET textoProcessado = "";

        -- Se tem Texto.
        IF length(texto) > 0 THEN

            -- Percorre a máscara enquanto seu tamanho for maior que zero.
            WHILE Length(mascara) > 0 DO

                -- Se o caracter é um curinga.
                IF LEFT(mascara,1) = "#" THEN

                    -- Concatena o primeiro caracter do texto.
                    SET textoProcessado = concat(textoProcessado,LEFT(texto,1));

                    -- Elimina o primeiro caracter da máscara.
                    SET mascara = SUBSTRING(mascara,2,255);

                    -- Elimina o primeiro caracter do texto.
                    SET texto = SUBSTRING(texto,2,255);

                ELSE

                    -- Concatena o primeiro caracter da máscara.
                    SET textoProcessado = concat(textoProcessado,LEFT(mascara,1));

                    -- Elimina o primeiro caracter da máscara.
                    SET mascara = SUBSTRING(mascara,2,255);

                END IF;

            END WHILE;

        END IF;

    RETURN trim(textoProcessado);
END

答案 4 :(得分:0)

您可以通过创建新的UDF(用户定义的函数)来实现这种功能。见http://dev.mysql.com/doc/refman/5.1/en/adding-functions.html