Mysql 在第一、中间和最后
我有一个包含以下内容的SQL:Mysql 在第一、中间和最后,mysql,Mysql,我有一个包含以下内容的SQL: CONCAT( tblpeople.FirstName , ' ' , IF( tblpeople.Middle <> '' , tblpeople.Middle , '' ) , ' ' , tblpeople.LastName , IF( tblpeople.NameSuffix <> '' , Conca
CONCAT(
tblpeople.FirstName ,
' ' ,
IF(
tblpeople.Middle <> '' ,
tblpeople.Middle ,
''
) ,
' ' ,
tblpeople.LastName ,
IF(
tblpeople.NameSuffix <> '' ,
Concat(', ' , tblpeople.NameSuffix) ,
''
)
) AS `Name` ,
CONCAT(
tblpeople.FirstName,
' ' ,
如果(
TBL人。中间“,
TBL人,中间,
''
) ,
' ' ,
tblpeople.LastName,
如果(
TBLPeope.NameSuffix“”,
Concat(',',tblpeople.NameSuffix),
''
)
)作为'Name`,
问题是,如果中间字段为Null或“”则会插入一个空格,因此带有Null的名称如下所示:
FirstName\u LastName(两个空格)。试试这个
concat_ws(' ',FirstName,MiddleName,LastName) as Name;
您还可以根据需要更改顺序,也可以阅读有关concat_ws()函数的内容
concat_ws(' ',FirstName,MiddleName,LastName) as Name;
您还可以根据自己的意愿更改顺序。您还可以阅读有关concat_ws()函数的内容。MySQL有一个简洁的内置函数,可以通过跳过
null
s为您完成大部分繁重的工作:
CONCAT_WS(' ', FirstName, Middle, LastName)
但是,它不会跳过空字符串,因此您必须明确地处理它,例如,使用大小写表达式:
CONCAT_WS(' ',
CASE FirstName WHEN '' THEN NULL ELSE FirstName END,
CASE Middle WHEN '' THEN NULL ELSE Middle END,
CASE LastName WHEN '' THEN NULL ELSE LastName END)
MySQL有一个简洁的内置函数,可以通过跳过null
s为您处理大部分繁重的工作:
CONCAT_WS(' ', FirstName, Middle, LastName)
但是,它不会跳过空字符串,因此您必须明确地处理它,例如,使用大小写表达式:
CONCAT_WS(' ',
CASE FirstName WHEN '' THEN NULL ELSE FirstName END,
CASE Middle WHEN '' THEN NULL ELSE Middle END,
CASE LastName WHEN '' THEN NULL ELSE LastName END)
我相信这会有帮助
Replace(CONCAT(
tblpeople.FirstName ,
' ' ,
IF(
tblpeople.Middle <> '' ,
tblpeople.Middle ,
''
) ,
' ' ,
tblpeople.LastName ,
IF(
tblpeople.NameSuffix <> '' ,
Concat(', ' , tblpeople.NameSuffix) ,
''
)
),' ',' ') AS `Name`
替换(CONCAT(
tblpeople.FirstName,
' ' ,
如果(
TBL人。中间“,
TBL人,中间,
''
) ,
' ' ,
tblpeople.LastName,
如果(
TBLPeope.NameSuffix“”,
Concat(',',tblpeople.NameSuffix),
''
)
),'','')作为'Name'
我相信这会有所帮助
Replace(CONCAT(
tblpeople.FirstName ,
' ' ,
IF(
tblpeople.Middle <> '' ,
tblpeople.Middle ,
''
) ,
' ' ,
tblpeople.LastName ,
IF(
tblpeople.NameSuffix <> '' ,
Concat(', ' , tblpeople.NameSuffix) ,
''
)
),' ',' ') AS `Name`
替换(CONCAT(
tblpeople.FirstName,
' ' ,
如果(
TBL人。中间“,
TBL人,中间,
''
) ,
' ' ,
tblpeople.LastName,
如果(
TBLPeope.NameSuffix“”,
Concat(',',tblpeople.NameSuffix),
''
)
),'','')作为'Name'
如上所述,CONCAT\u WS
单独使用空字符串会给您带来问题。我发现这比添加几个案例陈述要简洁一些:
CONCAT_WS(' ', FirstName, NULLIF(MiddleName, ''), NULLIF(LastName, '')) AS Name;
如上所述,CONCAT_WS
单独使用空字符串会给您带来问题。我发现这比添加几个案例陈述要简洁一些:
CONCAT_WS(' ', FirstName, NULLIF(MiddleName, ''), NULLIF(LastName, '')) AS Name;