it-swarm.com.de

Schreibe den ersten Buchstaben. MySQL

Kennt jemand das Äquivalent zu diesem TSQL in MySQL-Sprache?

Ich versuche, den ersten Buchstaben jedes Eintrags groß zu schreiben.

UPDATE tb_Company SET CompanyIndustry = UPPER(LEFT(CompanyIndustry, 1))
+ SUBSTRING(CompanyIndustry, 2, LEN(CompanyIndustry))
90
Chin

Es ist fast das Gleiche, Sie müssen nur die Funktion CONCAT () anstelle des Operators + verwenden:

UPDATE tb_Company
SET CompanyIndustry = CONCAT(UCASE(LEFT(CompanyIndustry, 1)), 
                             SUBSTRING(CompanyIndustry, 2));

Dies würde hello zu Hello, wOrLd zu WOrLd, BLABLA zu BLABLA, usw. machen. Wenn Sie den ersten Buchstaben in Großbuchstaben und den anderen in Kleinbuchstaben schreiben möchten, müssen Sie nur die LCASE-Funktion verwenden:

UPDATE tb_Company
SET CompanyIndustry = CONCAT(UCASE(LEFT(CompanyIndustry, 1)), 
                             LCASE(SUBSTRING(CompanyIndustry, 2)));

Beachten Sie, dass UPPER und UCASE dasselbe tun.

230
Vincent Savard

Hervorragende Antwort von Vincents für Großbuchstaben Erster Buchstabe eignet sich hervorragend für den ersten Buchstaben nur Großschreibung einer gesamten Spaltenfolge. 

ABER was ist, wenn Sie den ersten Buchstaben von JEDEM Wort in Großbuchstaben setzen möchten in den Zeichenfolgen einer Tabellenspalte?

zB: "Abbeville High School"

Ich hatte in Stackoverflow keine Antwort darauf gefunden. Ich musste ein paar Antworten zusammenstellen, die ich in Google gefunden hatte, um eine solide Lösung für das obige Beispiel zu bieten. Es ist keine native Funktion, sondern eine vom Benutzer erstellte Funktion, die MySQL Version 5+ ermöglicht.

Wenn Sie über einen Super/Admin-Benutzerstatus in MySQL verfügen oder eine lokale Installation von MySQL auf Ihrem eigenen Computer haben, können Sie eine FUNKTION (wie eine gespeicherte Prozedur) erstellen, die in Ihrer Datenbank gespeichert ist und in allen zukünftigen SQL-Abfragen von jedem Teil des Systems verwendet werden kann db.

Die von mir erstellte Funktion ermöglicht es mir, diese neue Funktion, die ich "UC_Words" nannte, genau wie die eingebauten Funktionen von MySQL zu verwenden, sodass ich eine vollständige Spalte wie folgt aktualisieren kann:

UPDATE Table_name
SET column_name = UC_Words(column_name) 

Um den Funktionscode einzufügen, habe ich den MySQL-Standardbegrenzer (;) während der Erstellung der Funktion geändert und nach dem Funktionserstellungsskript wieder auf Normal zurückgesetzt. Ich wollte auch persönlich, dass die Ausgabe in UTF8 CHARSET ist.

Funktionserstellung = 

DELIMITER ||  

CREATE FUNCTION `UC_Words`( str VARCHAR(255) ) RETURNS VARCHAR(255) CHARSET utf8_general_ci  
BEGIN  
  DECLARE c CHAR(1);  
  DECLARE s VARCHAR(255);  
  DECLARE i INT DEFAULT 1;  
  DECLARE bool INT DEFAULT 1;  
  DECLARE punct CHAR(17) DEFAULT ' ()[]{},[email protected];:?/';  
  SET s = LCASE( str );  
  WHILE i < LENGTH( str ) DO  
     BEGIN  
       SET c = SUBSTRING( s, i, 1 );  
       IF LOCATE( c, punct ) > 0 THEN  
        SET bool = 1;  
      ELSEIF bool=1 THEN  
        BEGIN  
          IF c >= 'a' AND c <= 'z' THEN  
             BEGIN  
               SET s = CONCAT(LEFT(s,i-1),UCASE(c),SUBSTRING(s,i+1));  
               SET bool = 0;  
             END;  
           ELSEIF c >= '0' AND c <= '9' THEN  
            SET bool = 0;  
          END IF;  
        END;  
      END IF;  
      SET i = i+1;  
    END;  
  END WHILE;  
  RETURN s;  
END ||  

DELIMITER ; 

Dies ist ein Leckerbissen, bei dem Großbuchstaben für mehrere Wörter in einer Zeichenfolge ausgegeben werden.

Angenommen, Ihr Benutzername für MySQL-Login verfügt über ausreichende Berechtigungen - wenn nicht, und Sie können auf Ihrem persönlichen Computer keine temporäre Datenbank zum Konvertieren Ihrer Tabellen einrichten, und fragen Sie Ihren Shared-Hosting-Provider, ob diese Funktion für Sie festgelegt wird.

Sie können eine Kombination aus UCASE(), MID() und CONCAT() verwenden:

SELECT CONCAT(UCASE(MID(name,1,1)),MID(name,2)) AS name FROM names;
17
Wouter Dorgelo
mysql> SELECT schedule_type AS Schedule FROM ad_campaign limit 1;
+----------+
| Schedule |
+----------+
| ENDDATE  |
+----------+
1 row in set (0.00 sec)

mysql> SELECT CONCAT(UCASE(MID(schedule_type,1,1)),LCASE(MID(schedule_type,2))) AS Schedule FROM ad_campaign limit 1;
+----------+
| Schedule |
+----------+
| Enddate  |
+----------+
1 row in set (0.00 sec)

http://dev.mysql.com/doc/refman/5.0/de/string-functions.html#function_mid

7
Root

http://forge.mysql.com/tools/tool.php?id=201

Wenn die Spalte mehr als 1 Wort enthält, funktioniert dies nicht wie unten gezeigt ..__ Die oben erwähnte UDF kann in diesem Fall hilfreich sein.

mysql> select * from names;
+--------------+
| name         |
+--------------+
| john abraham | 
+--------------+
1 row in set (0.00 sec)

mysql> SELECT CONCAT(UCASE(MID(name,1,1)),MID(name,2)) AS name FROM names;
+--------------+
| name         |
+--------------+
| John abraham | 
+--------------+
1 row in set (0.00 sec)

Oder vielleicht hilft dieser ...

https://github.com/mysqludf/lib_mysqludf_str#str_ucwords

5
shantanuo

Das funktioniert gut.

UPDATE-Status SET-Name = CONCAT (UCASE (LEFT (Name, 1)), LCASE (SUBSTRING (Name, 2)));

2
Abhinav Sahu
UPDATE tb_Company SET CompanyIndustry = UCASE(LEFT(CompanyIndustry, 1)) + 
SUBSTRING(CompanyIndustry, 2, LEN(CompanyIndustry))
1
Jasdeep Singh

EINE FUNKTION ERSTELLEN:

CREATE DEFINER=`root`@`localhost` FUNCTION `UC_FIRST`(`oldWord` VARCHAR(255)) 

RETURNS varchar(255) CHARSET utf8

RETURN CONCAT( UCASE( LEFT(oldWord, 1)), LCASE(SUBSTRING(oldWord, 2)))

BENUTZEN SIE DIE FUNKTION

UPDATE tbl_name SET col_name = UC_FIRST(col_name);
1
Florin

Wenn jemand versucht, jedes Wort durch Leerzeichen getrennt darzustellen ...

CREATE FUNCTION response(name VARCHAR(40)) RETURNS VARCHAR(200) DETERMINISTIC
BEGIN
   set @m='';
   set @c=0;
   set @l=1;
   while @c <= char_length(name)-char_length(replace(name,' ','')) do
      set @c = @c+1;
      set @p = SUBSTRING_INDEX(name,' ',@c);
      set @k = substring(name,@l,char_length(@p)[email protected]+1);
      set @l = char_length(@k)+2;
      set @m = concat(@m,ucase(left(@k,1)),lcase(substring(@k,2)),' ');
   end while;
   return trim(@m); 
END;
CREATE PROCEDURE updateNames()
BEGIN
  SELECT response(name) AS name FROM names;
END;

Ergebnis

+--------------+
| name         |
+--------------+
| Abdul Karim  | 
+--------------+
1
Jahir islam
UPDATE users
SET first_name = CONCAT(UCASE(LEFT(first_name, 1)), 
                             LCASE(SUBSTRING(first_name, 2)))
,last_name = CONCAT(UCASE(LEFT(last_name, 1)), 
                             LCASE(SUBSTRING(last_name, 2)));
0
sandeep kumar
 select  CONCAT(UCASE(LEFT('CHRIS', 1)),SUBSTRING(lower('CHRIS'),2));

Die obige Anweisung kann für den Anfangsbuchstaben CAPS und als Kleinbuchstaben verwendet werden.

0
Aamir Khan

Das sollte gut funktionieren:

UPDATE tb_Company SET CompanyIndustry = 
CONCAT(UPPER(LEFT(CompanyIndustry, 1)), SUBSTRING(CompanyIndustry, 2))
0