Страница 1 из 1
Вопрос к крутым SQL-никам
Добавлено: 04 авг 2006, 20:26
Stanislav
Есть таблица, в одном из столбцов тип данных - STRING, эта строка состоит из нескольких слов (1..5) Все слова UPPER CASE.
Необходимо средствами mySQL превратить эту строку в строку, где все буквы маленькие, а только первая буква каждого слова большая.
Во как...
Re: Вопрос к крутым SQL-никам
Добавлено: 04 авг 2006, 20:44
Marmot
Stanislav писал(а):Есть таблица, в одном из столбцов тип данных - STRING, эта строка состоит из нескольких слов (1..5) Все слова UPPER CASE.
Необходимо средствами mySQL превратить эту строку в строку, где все буквы маленькие, а только первая буква каждого слова большая.
Во как...
Идём сюда
http://dev.mysql.com/doc/refman/5.0/en/ ... tions.html
и читаем, особенно коментарии, там кусочки того что надо есть
Re: Вопрос к крутым SQL-никам
Добавлено: 04 авг 2006, 20:48
Stanislav
Marmot писал(а):Stanislav писал(а):Есть таблица, в одном из столбцов тип данных - STRING, эта строка состоит из нескольких слов (1..5) Все слова UPPER CASE.
Необходимо средствами mySQL превратить эту строку в строку, где все буквы маленькие, а только первая буква каждого слова большая.
Во как...
Идём сюда
http://dev.mysql.com/doc/refman/5.0/en/ ... tions.html
и читаем, особенно коментарии, там кусочки того что надо есть
Тут я уже был... Оно в общем понятно, что сделать можно, но только получится такая байда длинная - целая программа, а ведь это учебная задача. Две остальных задачи решились буквально в 2 строки...
Я вот и подумал, может что-то есть по этому поводу чтобы в 2 строки тоже?
Re: Вопрос к крутым SQL-никам
Добавлено: 04 авг 2006, 21:16
Marmot
Stanislav писал(а):Тут я уже был... Оно в общем понятно, что сделать можно, но только получится такая байда длинная - целая программа, а ведь это учебная задача. Две остальных задачи решились буквально в 2 строки...
Я вот и подумал, может что-то есть по этому поводу чтобы в 2 строки тоже?
В этом деле всяко бывает, мой самый большой select был 400 строчек.
Хотя для учебной задачи это по-моему перебор.
Re: Вопрос к крутым SQL-никам
Добавлено: 05 авг 2006, 08:02
Stanislav
Marmot писал(а):...мой самый большой select был 400 строчек.
"Ну у вас и запросы!" - сказала База Данных и повисла...

SQL
Добавлено: 07 авг 2006, 21:01
Yuri Dimant
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
Добавлено: 07 авг 2006, 21:58
bormo
Если бы слово было одно, то что-нибудь типа
Код: Выделить всё
concat (
upper (
substr (field, 1, 1)
),
lower (
substr (field from 2)
)
)
или без первого upper, если все в верхнем. Задачка - как распарсить строку. Если бы все время было 5, то решалось бы при помощи
substring_index
Хотя и так можно попробовать, если вставить его в запрос заведомо максимальное число раз.
Хотя дружеский совет - нормализация.