Nasıl bir tablodaki tüm satırlar arasında bir nitelik değiştirmek?

4 Cevap php

Böyle bir acemi soru soran ama için özür dilerim, ben aşağıdakileri yapabilirsiniz PHP veya doğrudan MySQL kullanarak bir komut dosyası oluşturmak için yardıma ihtiyacım var:

  1. Bir tablodaki bir sütun değerleri alabilir (metin)
  2. ("Bu bir başlık" için "bu bir başlık" den) büyük harfle kelimeleri bunları değiştirmek
  3. Yeni değerlerin (büyük harfle) ile eski değerleri (uncapitalized) değiştirin.

Yardım ve destek için teşekkür ederiz.

4 Cevap

  1. MySQL Oracle'ın INITCAP gibi bir işlevi yoktur - Mecbur create the function yourself:

    DELIMITER $$
    DROP FUNCTION IF EXISTS `test`.`initcap`$$
    
    
    CREATE FUNCTION `initcap`(x char(30)) RETURNS char(30) CHARSET utf8
    BEGIN
    
    
      SET @str='';
      SET @l_str='';
    
    
      WHILE x REGEXP ' ' DO
        SELECT SUBSTRING_INDEX(x, ' ', 1) INTO @l_str;
        SELECT SUBSTRING(x, LOCATE(' ', x)+1) INTO x;
        SELECT CONCAT(@str, ' ', CONCAT(UPPER(SUBSTRING(@l_str,1,1)),LOWER(SUBSTRING(@l_str,2)))) INTO @str;
      END WHILE;
    
    
      RETURN LTRIM(CONCAT(@str, ' ', CONCAT(UPPER(SUBSTRING(x,1,1)),LOWER(SUBSTRING(x,2)))));
    
    
    END$$
    
    
    DELIMITER ;
    

    Parametresi metin uzunluğu en uzun metin alanı gibi uzun olduğu unutulmamalıdır.

  2. Bir kullanın UPDATE statement:

    UPDATE TABLE 
       SET text_column = initcap(text_column)
    

Çizgisinde SQL ile satırları seçin:

SELECT <string> FROM <table> [WHERE <field> = <whatever>]

PHP'nin ucwords() işlevini kullanarak dize güncelleyin:

$UpperCaseString = ucwords($lowercase);

Her kaydı güncelleyin:

UPDATE <table> SET <fieldname> = <UpperCaseString> WHERE id=<id>

Ne yapmak isteyeceğiniz tüm değerleri almak, ve her biri için, bunun üzerinde PHP işlevi ucwords çalıştırın. Kod örneği kısa zamanda gelecek ...

EDIT: @ smotchkkiss beni yenmek - :-) onun kodu kullanabilirsiniz