2009-03-11 44 views
8

Có một định dạng printf() - giống như trong MySQL không?
Tôi không thể tìm thấy một cách đơn giản trong tài liệu.Định dạng chuỗi trong MySQL

Ví dụ, làm thế nào tôi có thể làm một cái gì đó như:

SELECT STRFORMATFUNCTIONIMLOOKINGFOR("%03d", 17) 

để có được 017?

Trả lời

2

see FORMAT():

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

nhưng nó chỉ để định dạng số float.

5

ví dụ của bạn, bạn có thể sử dụng

CHỌN LPAD (17, 3, '0');

cũng có

SELECT FORMAT (17, 3); - 17.000

nếu không, UDF như đã đề cập ở trên.

1
-- 
-- Autor: Ivan Sansão. 
-- 
-- Função para formatar strings. 
-- Exemplo: select mask("","(##) ####-####"); 
-- 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 
3

Có lẽ nó sẽ hữu ích:

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