Есть таблица, в одном из столбцов тип данных - STRING, эта строка состоит из нескольких слов (1..5) Все слова UPPER CASE.
Необходимо средствами mySQL превратить эту строку в строку, где все буквы маленькие, а только первая буква каждого слова большая.
Во как...
Вопрос к крутым SQL-никам
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- Stanislav
- Mr. Minority Report
- Сообщения: 45208
- Зарегистрирован: 19 окт 2005, 16:33
- Откуда: Moscow - Richmond - New Wesт - Burnaby - PoCo
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Вопрос к крутым SQL-никам
Идём сюдаStanislav писал(а):Есть таблица, в одном из столбцов тип данных - STRING, эта строка состоит из нескольких слов (1..5) Все слова UPPER CASE.
Необходимо средствами mySQL превратить эту строку в строку, где все буквы маленькие, а только первая буква каждого слова большая.
Во как...
http://dev.mysql.com/doc/refman/5.0/en/ ... tions.html
и читаем, особенно коментарии, там кусочки того что надо есть
- Stanislav
- Mr. Minority Report
- Сообщения: 45208
- Зарегистрирован: 19 окт 2005, 16:33
- Откуда: Moscow - Richmond - New Wesт - Burnaby - PoCo
Re: Вопрос к крутым SQL-никам
Тут я уже был... Оно в общем понятно, что сделать можно, но только получится такая байда длинная - целая программа, а ведь это учебная задача. Две остальных задачи решились буквально в 2 строки...Marmot писал(а):Идём сюдаStanislav писал(а):Есть таблица, в одном из столбцов тип данных - STRING, эта строка состоит из нескольких слов (1..5) Все слова UPPER CASE.
Необходимо средствами mySQL превратить эту строку в строку, где все буквы маленькие, а только первая буква каждого слова большая.
Во как...
http://dev.mysql.com/doc/refman/5.0/en/ ... tions.html
и читаем, особенно коментарии, там кусочки того что надо есть
Я вот и подумал, может что-то есть по этому поводу чтобы в 2 строки тоже?
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Вопрос к крутым SQL-никам
В этом деле всяко бывает, мой самый большой select был 400 строчек.Stanislav писал(а):Тут я уже был... Оно в общем понятно, что сделать можно, но только получится такая байда длинная - целая программа, а ведь это учебная задача. Две остальных задачи решились буквально в 2 строки...
Я вот и подумал, может что-то есть по этому поводу чтобы в 2 строки тоже?
Хотя для учебной задачи это по-моему перебор.
- Stanislav
- Mr. Minority Report
- Сообщения: 45208
- Зарегистрирован: 19 окт 2005, 16:33
- Откуда: Moscow - Richmond - New Wesт - Burnaby - PoCo
Re: Вопрос к крутым SQL-никам
"Ну у вас и запросы!" - сказала База Данных и повисла...Marmot писал(а):...мой самый большой select был 400 строчек.

-
- Пользователь
- Сообщения: 107
- Зарегистрирован: 02 авг 2004, 22:00
SQL
Stanislav
I did something but in SQL Server. I hope it will give an idea how to convert it to MySQL
CREATE FUNCTION dbo.fn_capitalize
(
@str AS nvarchar(100)
)
RETURNS nvarchar(100)
AS
BEGIN
DECLARE
@ret_str AS varchar(100),
@pos AS int,
@len AS int
SELECT
@ret_str = N' ' + LOWER(@str),
@pos = 1,
@len = LEN(@str) + 1
WHILE @pos > 0 AND @pos < @len
BEGIN
SET @ret_str = STUFF(@ret_str,
@pos + 1,
1,
UPPER(SUBSTRING(@ret_str,@pos + 1, 1)))
SET @pos = CHARINDEX(N' ', @ret_str, @pos + 1)
END
RETURN RIGHT(@ret_str, @len - 1)
END
------
SELECT dbo.fn_capitalize('TOWN OF BAR HARBOR')
DROP FUNCTION dbo.fn_capitalize
I did something but in SQL Server. I hope it will give an idea how to convert it to MySQL
CREATE FUNCTION dbo.fn_capitalize
(
@str AS nvarchar(100)
)
RETURNS nvarchar(100)
AS
BEGIN
DECLARE
@ret_str AS varchar(100),
@pos AS int,
@len AS int
SELECT
@ret_str = N' ' + LOWER(@str),
@pos = 1,
@len = LEN(@str) + 1
WHILE @pos > 0 AND @pos < @len
BEGIN
SET @ret_str = STUFF(@ret_str,
@pos + 1,
1,
UPPER(SUBSTRING(@ret_str,@pos + 1, 1)))
SET @pos = CHARINDEX(N' ', @ret_str, @pos + 1)
END
RETURN RIGHT(@ret_str, @len - 1)
END
------
SELECT dbo.fn_capitalize('TOWN OF BAR HARBOR')
DROP FUNCTION dbo.fn_capitalize
-
- Пользователь
- Сообщения: 194
- Зарегистрирован: 19 май 2006, 21:03
- Откуда: + 1 604
Если бы слово было одно, то что-нибудь типа
или без первого upper, если все в верхнем. Задачка - как распарсить строку. Если бы все время было 5, то решалось бы при помощи
substring_index
Хотя и так можно попробовать, если вставить его в запрос заведомо максимальное число раз.
Хотя дружеский совет - нормализация.
Код: Выделить всё
concat (
upper (
substr (field, 1, 1)
),
lower (
substr (field from 2)
)
)
substring_index
Хотя и так можно попробовать, если вставить его в запрос заведомо максимальное число раз.
Хотя дружеский совет - нормализация.