Вы можете использовать SUBSTRING_INDEX
SELECT CONCAT(
SUBSTRING_INDEX(name, ' ', -1 ),
' ',
SUBSTRING_INDEX( name, ' ', 1 )
)
AS Name FROM table_name
Результат
-------------
sunny day
-------------
windy day
-------------
cloudy night
-------------
Здесь вы можете перейти, используйте PHP ucfirst, чтобы заглавные буквы были прописными: -
SELECT name,
(
CASE
WHEN
INSTR(name, 'day') > 0 AND (LENGTH(name) - LENGTH(REPLACE(name, ' ', '')) + 1) < 3
THEN
CONCAT(
SUBSTRING_INDEX(name, ' ', -1 ),
' ',
SUBSTRING_INDEX(name, ' ', 1 )
)
WHEN
INSTR(name, 'day') > 0 AND (LENGTH(name) - LENGTH(REPLACE(name, ' ', '')) + 1) > 2
THEN
CONCAT(
CONCAT(SUBSTRING_INDEX(name, ' ', 1),' ','day'),
' ',
REPLACE(SUBSTRING_INDEX(name, ' ', -2),'day','')
)
ELSE
name
END) AS Name
FROM tablename
Результат: -
-----------
sunny day
-----------
windy day
-----------
cloudy night
-----------
rainy day outside
-----------
Попробуйте выполнить внутри PHP цикла while: -
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
//$rows[] = ucfirst($row['Name']);
echo ucfirst($row['Name']);echo '<br/>';
}
}
Полный код PHP: -
$conn = mysqli_connect('localhost','root','123123','stackoverflow') or die ("Fail");
$sql = "SELECT name,
(
CASE
WHEN
INSTR(name, 'day') > 0 AND (LENGTH(name) - LENGTH(REPLACE(name, ' ', '')) + 1) < 3
THEN
CONCAT(
SUBSTRING_INDEX(name, ' ', -1 ),
' ',
SUBSTRING_INDEX(name, ' ', 1 )
)
WHEN
INSTR(name, 'day') > 0 AND (LENGTH(name) - LENGTH(REPLACE(name, ' ', '')) + 1) > 2
THEN
CONCAT(
CONCAT(SUBSTRING_INDEX(name, ' ', 1),' ','day'),
' ',
REPLACE(SUBSTRING_INDEX(name, ' ', -2),'day','')
)
ELSE
name
END) AS Name
FROM tablename";
$result = $conn->query($sql);
$rows = array();
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$rows[] = ucfirst($row['Name']);
}
}
echo '<pre>';
print_r($rows);
Выход: -
Array
(
[0] => Sunny day
[1] => Windy day
[2] => Cloudy night
[3] => Rainy day outside
)