mysql delette_关于字符串:首字母大写MySQL
用mysql的說法,有人知道這個tsql的等價物嗎?
我正試圖把每個條目的第一個字母大寫。
UPDATE tb_Company SET CompanyIndustry = UPPER(LEFT(CompanyIndustry, 1))
+ SUBSTRING(CompanyIndustry, 2, LEN(CompanyIndustry))
幾乎是一樣的,只需更改即可使用concat()函數而不是+運算符:
UPDATE tb_Company
SET CompanyIndustry = CONCAT(UCASE(LEFT(CompanyIndustry, 1)),
SUBSTRING(CompanyIndustry, 2));
這將使hello變為hello,wOrLd變為wOrLd,BLABLA變為BLABLA等,如果你想把第一個字母大寫,另一個字母小寫,你只需要使用lcase函數:
UPDATE tb_Company
SET CompanyIndustry = CONCAT(UCASE(LEFT(CompanyIndustry, 1)),
LCASE(SUBSTRING(CompanyIndustry, 2)));
注意upper和ucase做同樣的事情。
謝謝-那是我需要的。我忘了說我需要先設置小寫。謝謝
很有效,太好了!謝謝@ Vincent
文森特對大寫第一個字母的完美回答對于整個列字符串的第一個字母大寫效果很好。
但是,如果您想將表列字符串中每個單詞的第一個字母大寫怎么辦?
例如:"阿貝維爾高中"
我在StackOverflow中沒有找到答案。我不得不拼湊出一些我在谷歌找到的答案,為上面的例子提供一個可靠的解決方案。它不是一個本機函數,而是一個用戶創建的函數,MySQL5+版允許這樣做。
如果您在mysql上有super/admin用戶狀態,或者在自己的計算機上安裝了本地mysql,那么您可以創建一個函數(如存儲過程),該函數位于數據庫中,并且可以在將來對數據庫的任何部分使用SQL查詢。
我創建的函數允許我使用這個我稱為"uc-words"的新函數,就像mysql內置的本機函數一樣,這樣我就可以更新一個完整的列,如下所示:
UPDATE Table_name
SET column_name = UC_Words(column_name)
為了插入函數代碼,我在創建函數時更改了MySQL標準分隔符(;),然后在函數創建腳本之后將其重置為正常值。我個人也希望輸出也是utf8字符集。
函數創建=
這是一種在字符串中多個單詞上輸出大寫首字母的處理方法。
假設您的MySQL登錄用戶名有足夠的權限(如果沒有),并且您無法在個人計算機上設置臨時數據庫來轉換表,那么請詢問共享宿主提供程序是否將為您設置此功能。
CHARSET utf8_general_ci應改為CHARSET utf8(至少在5.7上)
@manueldallana實際上,您可能會得到錯誤Illegal mix of collations for operation 'concat',所以我認為只需修復或刪除該字符集并使其默認。
您可以使用UCASE()、MID()和CONCAT()的組合:
SELECT CONCAT(UCASE(MID(name,1,1)),MID(name,2)) AS name FROM names;
這不會降低所有其他字母。試試SELECT CONCAT(UCASE(MID('TEST',1,1)),MID('TEST',2));。
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/en/string-functions.html函數mid
http://forge.mysql.com/tools/tool.php?ID=201
如果列中有超過1個單詞,則此操作將不起作用,如下所示。在這種情況下,上述UDF可能會有所幫助。
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)
或者這個會有幫助…
https://github.com/mysqludf/lib_mysqludf_str_str_ucwords
這很管用。
UPDATE state SET name = CONCAT(UCASE(LEFT(name, 1)),
LCASE(SUBSTRING(name, 2)));
If anyone try to capitalize the every word separate by space...
Result
+--------------+
| name ? ? ? ? |
+--------------+
| Abdul Karim ?|
+--------------+
創建函數:
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)))
使用函數
UPDATE tbl_name SET col_name = UC_FIRST(col_name);
UPDATE tb_Company SET CompanyIndustry = UCASE(LEFT(CompanyIndustry, 1)) +
SUBSTRING(CompanyIndustry, 2, LEN(CompanyIndustry))
這不起作用,+不是mysql的concat操作符。
Enrico Pallazzo發布的答案應該很好。
我只是想強調mysql中的ucase函數:p:)
Upper也可以和MySQL一起使用
上面的語句可用于第一個字母的大寫,其余的用作小寫。
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)));
這應該很好地工作:
UPDATE tb_Company SET CompanyIndustry =
CONCAT(UPPER(LEFT(CompanyIndustry, 1)), SUBSTRING(CompanyIndustry, 2))
uso algo simples assim;)
DELIMITER $$
DROP FUNCTION IF EXISTS `uc_frist` $$
CREATE FUNCTION `uc_frist` (str VARCHAR(200)) RETURNS varchar(200)
BEGIN
set str:= lcase(str);
set str:= CONCAT(UCASE(LEFT(str, 1)),SUBSTRING(str, 2));
set str:= REPLACE(str, ' a', ' A');
set str:= REPLACE(str, ' b', ' B');
set str:= REPLACE(str, ' c', ' C');
set str:= REPLACE(str, ' d', ' D');
set str:= REPLACE(str, ' e', ' E');
set str:= REPLACE(str, ' f', ' F');
set str:= REPLACE(str, ' g', ' G');
set str:= REPLACE(str, ' h', ' H');
set str:= REPLACE(str, ' i', ' I');
set str:= REPLACE(str, ' j', ' J');
set str:= REPLACE(str, ' k', ' K');
set str:= REPLACE(str, ' l', ' L');
set str:= REPLACE(str, ' m', ' M');
set str:= REPLACE(str, ' n', ' N');
set str:= REPLACE(str, ' o', ' O');
set str:= REPLACE(str, ' p', ' P');
set str:= REPLACE(str, ' q', ' Q');
set str:= REPLACE(str, ' r', ' R');
set str:= REPLACE(str, ' s', ' S');
set str:= REPLACE(str, ' t', ' T');
set str:= REPLACE(str, ' u', ' U');
set str:= REPLACE(str, ' v', ' V');
set str:= REPLACE(str, ' w', ' W');
set str:= REPLACE(str, ' x', ' X');
set str:= REPLACE(str, ' y', ' Y');
set str:= REPLACE(str, ' z', ' Z');
return ?str;
END $$
DELIMITER ;
總結
以上是生活随笔為你收集整理的mysql delette_关于字符串:首字母大写MySQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 默认page大小_MySQL
- 下一篇: 计算机设备报废流程图,报废流程图.ppt