我的数据库中有fname和lname,名称可以存储为JOHN DOE或john DOE或JoHN dOE,但最终我想将其显示为John Doe
fname是John,lname是Doe
答案 0 :(得分:21)
请注意,还有其他大写形式,例如John McDoe,John D'Oe,John de O和John van den Doe。
答案 1 :(得分:14)
看到它被标记为PHP:
string ucfirst ( string $str );
到第一个单词的大写第一个字母
或
string ucwords ( string $str );
将每个单词的第一个字母大写
您可能希望将这些与
结合使用
string strtolower ( string $str );
首先将所有名称规范化为小写。
答案 2 :(得分:13)
我不确定您希望在何处以及如何显示它,但如果它在网页上,您可能会尝试使用CSS更改显示。尝试添加:
text-transform:capitalize;
相关规则,如下:
.name { text-transform:capitalize;}
如果您将名称放在带有class =“name”的div或span中。当然,这不会以任何方式改变数据库条目,但我不清楚哪个更适合。
答案 3 :(得分:3)
来自php.net的示例:
$bar = 'HELLO WORLD!';
$bar = ucfirst($bar); // HELLO WORLD!
$bar = ucfirst(strtolower($bar)); // Hello world!
请记住有关语言环境的说明......
答案 4 :(得分:1)
对于简单的名称,这将有效。请注意特殊情况(如下例中的“Ronald McDonald”)。
在SQL Server中:
SELECT --step 2: combine broken parts into a final name
NAME_PARTS.FNAME_INITIAL + NAME_PARTS.REST_OF_FNAME AS FNAME
,NAME_PARTS.LNAME_INITIAL + NAME_PARTS.REST_OF_LNAME AS LNAME
FROM
( --step 1: break name into 1st letter and "everything else"
SELECT
UPPER(SUBSTRING(TEST.FNAME,1,1)) AS FNAME_INITIAL
,UPPER(SUBSTRING(TEST.LNAME,1,1)) AS LNAME_INITIAL
,LOWER(SUBSTRING(TEST.FNAME,2,LEN(TEST.FNAME))) AS REST_OF_FNAME
,LOWER(SUBSTRING(TEST.LNAME,2,LEN(TEST.LNAME))) AS REST_OF_LNAME
FROM
( --step 0: generate some test data
SELECT 'john' AS FNAME, 'doe' as LNAME
UNION SELECT 'SUZY', 'SMITH'
UNION SELECT 'bIlLy', 'BOb'
UNION SELECT 'RoNALD', 'McDonald'
UNION SELECT 'Edward', NULL
UNION SELECT NULL, 'Jones'
) TEST
) NAME_PARTS
在Oracle
SELECT --step 2: combine broken parts into a final name
NAME_PARTS.FNAME_INITIAL || NAME_PARTS.REST_OF_FNAME AS FNAME
,NAME_PARTS.LNAME_INITIAL || NAME_PARTS.REST_OF_LNAME AS LNAME
FROM
( --step 1: break name into 1st letter and "everything else"
SELECT
UPPER(SUBSTR(TEST.FNAME,1,1)) AS FNAME_INITIAL
,UPPER(SUBSTR(TEST.LNAME,1,1)) AS LNAME_INITIAL
,LOWER(SUBSTR(TEST.FNAME,2,LENGTH(TEST.FNAME))) AS REST_OF_FNAME
,LOWER(SUBSTR(TEST.LNAME,2,LENGTH(TEST.LNAME))) AS REST_OF_LNAME
FROM
( --step 0: generate some test data
SELECT 'john' AS FNAME, 'doe' as LNAME FROM DUAL
UNION SELECT 'SUZY', 'SMITH' FROM DUAL
UNION SELECT 'bIlLy', 'BOb' FROM DUAL
UNION SELECT 'RoNALD', 'McDonald' FROM DUAL
UNION SELECT 'Edward', NULL FROM DUAL
UNION SELECT NULL, 'Jones' FROM DUAL
) TEST
) NAME_PARTS
答案 5 :(得分:1)
结合PHP速记函数strtolower和ucwords解决了您的问题:
function ucname($f, $l)
{
return ucwords(strtolower($f." ".$l));
}
echo ucname($fname, $lname);
另一方面,请记住,您可以在许多不同阶段进行这种数据美化:
答案 6 :(得分:-1)
将名称更改为更低,然后将('A' - 'a')添加到fname&的第一个字母。 L-NAME。