Как сделать первую букву заглавной sql
Перейти к содержимому

Как сделать первую букву заглавной sql

  • автор:

Правильно использовать заглавные буквы в SQL

но я чувствую, что должно быть более элегантное и поддерживаемое решение. Любые идеи?

Если есть встроенная функция, аналогичная, но не идентичная моим требованиям, которая, вероятно, будет прекрасной.

Изменить: этот script будет запускаться только по именам, которые уже потеряли свою капитализацию, поэтому нет опасности при неправильном использовании непонятных имен. Тем не менее, обработка апострофов, таких как пробелы и тире, будет приятной. Взгляд на текущие данные показывает, что у многих (~ 30%) имен есть хотя бы один из [-].

Charles 22 окт. 2010, в 16:37
Поделиться

«Более элегантное решение» — хранить данные в том формате, в котором вы хотите начать. Или используйте скрипт, чтобы вытащить его и переформатировать. SQL действительно не подходит для этого.

Matthew Smith 22 окт. 2010, в 14:09

Возможно, мне придется извлечь данные и использовать Perl, но если бы в SQL был хороший метод, я бы предпочел использовать его.

SQL-Ex blog

Как перевести первую букву каждого слова предложения в верхний регистр?

Добавил smois on Суббота, 13 апреля. 2019

Эта задача возникла как осмысленный пример для демонстрации использования скалярных функций, табличных переменных и новых возможностей языка T-SQL. Итак, требуется создать функцию, которая будет делать первую букву каждого слова заглавной, а остальные — строчными.

  • Слова разделяются единичными пробелами.
  • Количество слов произвольно.
  • Разбиваем фразу на отдельные слова, которые помещаем в табличную переменную.
  • Делаем первую букву каждого слова прописной.
  • Собираем строку из слов, соблюдая порядок, с помощью функции STRING_AGG.
create or alter function firstBigLetter(@name varchar(max)) 
returns varchar(max)
as
begin
declare @i int = 1, @next int = 1;
declare @t table(id int identity primary key, word varchar(100))
-- Пока подумаем, зачем нам identity?
while @next > 0
begin
select @next=charindex(' ', @name, @i);
if @next=0 -- больше пробелов нет, берем последнее слово
insert into @t(word) select substring(@name, @i, len(@name))
else -- берем очередное слово между @i и @next
insert into @t(word) select substring(@name, @i, @next-@i)
set @i=@next + 1; -- начало следующего слова
end
--Выполняем требуемое преобразование слов
update @t set word= upper(left(word, 1)) + lower(substring(word, 2, len(word)))
-- Сборка и возврат
return(select string_agg(word, ' ')
WITHIN GROUP (ORDER BY id) -- вот зачем нам Identity!
from @t)
end;
go

-- Вызов
select dbo.firstBigLetter('еСли кто-то кое-ГДе у наС порой');

--Результат
Если Кто-то Кое-где У Нас Порой

Пояснения.

  1. Конструкция CREATE OR ALTER FUNCTION появилась в SQL Server 2017 как аналог CREATE OR REPLACE FUNCTION в PostgreSQL. Теперь не нужно напрягать память, чтобы не забыть поменять ALTER на CREATE после отладки.
  2. Столбец Identity задает нам порядок, в котором следуют слова в предложении. Поэтому при сборке мы используем сортировку именно по этому столбцу — WITHIN GROUP (ORDER BY id).
  3. Естественно, можно было не выполнять разбивку на слова, а, например, использовать рекурсивный запрос, но я преследовал тут вполне определенные учебные цели. Если кто-то решит оценить производительность различных алгоритмов, можете поделиться результатами в комментариях.

Функция STRING_AGG, которая использовалась при сборке предложения, имеет обратную функцию STRING_SPLIT (обе эти функции появились в SQL Server 2017), которая как раз выполняет разбивку символьной строки, формируя одностолбцовую таблицу. Использование этой функции напрашивается для решения нашей задачи. Однако, согласно документации, она не гарантирует порядка. В моих примерах строка восстанавливалась правильно, поэтому я приведу и это решение в качестве примера использования функции. Но если вы решите применять её, то делайте это на свой страх и риск.

create or alter function firstBigLetterWithoutOrder(@name varchar(max)) 
returns varchar(max)
as
begin
return(select string_agg(upper(left(value,1))+lower(substring(value,2,len(value))),' ') from
(select value from STRING_SPLIT(@name,' ')) X)
end
go

--Вызов
select dbo.firstBigLetterWithoutOrder('еСли кто-то кое-ГДе у наС порой');

sql запрос с выборкой по букве

Всем привет, подскажите пожалуйста как сформировать sql запрос: Выбрать * В таблице ГДЕ первая буква А. Пытался вот так, ничего не вышло:

SELECT * FROM table WHERE name='А%' 

Отслеживать
32.3k 15 15 золотых знаков 61 61 серебряный знак 93 93 бронзовых знака
задан 8 июл 2015 в 13:35
87 1 1 золотой знак 1 1 серебряный знак 8 8 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

SELECT * FROM tags WHERE tag LIKE 'А%' 

Отслеживать
ответ дан 8 июл 2015 в 13:38
5,670 1 1 золотой знак 11 11 серебряных знаков 17 17 бронзовых знаков

Выводит ошибку: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘=’�%’ at line 1

8 июл 2015 в 13:42
Сам запрос выглядит вот так «SELECT * FROM tags WHERE tag LIKE=’А%»
8 июл 2015 в 13:43
Знак = после LIKE не нужен
8 июл 2015 в 13:44
@Димон в моем запросе не было знака равно
8 июл 2015 в 13:46

Для таких целей в SQL есть специальный оператор LIKE . Ваш запрос должен принять вид

SELECT * FROM `table` WHERE name LIKE 'A%' 

Отслеживать
ответ дан 8 июл 2015 в 13:41
446 3 3 серебряных знака 9 9 бронзовых знаков

Фильтр заработал, подскажите пожалуйста как сделать запрос посредством $_GET. К примеру в url имеется ссылка вида site.ru/?word=a и как сделать что бы значение ‘a’ уходило в переменную $test и запрос уже формировался так SELECT * FROM table WHERE name LIKE ‘$test%’

8 июл 2015 в 13:52

@Димон самый примитивный и весьма уязвий способ GET методом: mysqli_query($db, «SELECT * FROM table WHERE name LIKE ‘$test%'»); . Однако вам следует сначала проверять значение в GET

8 июл 2015 в 14:38

SELECT * FROM table WHERE name LIKE ‘A%’ Это всё круто, но что делать если у меня переменная, а не готовая буква? Если это я вызываю например call primer (‘а’);

26 мая 2019 в 19:32

«но что делать если у меня переменная, а не готовая буква?» — задать новый вопрос. Вы дали «ответ» и здесь вам никто не ответит.

Как сделать первую букву заглавной в SQL: простые способы и инструкция

Как сделать первую букву заглавной в sql? Чтобы сделать первую букву заглавной в SQL, можно использовать функцию `INITCAP`. Она преобразует первую букву каждого слова в строке в заглавную, а все остальные буквы в строчные. Вот пример использования функции `INITCAP`:

 SELECT INITCAP('hello world'); 

Этот запрос вернет строку «Hello World». Также можно использовать функцию `UPPER` для преобразования всей строки в верхний регистр и функцию `LOWER` для преобразования всей строки в нижний регистр. Например:

 SELECT UPPER('hello world'); SELECT LOWER('HELLO WORLD'); 

Первый запрос вернет строку «HELLO WORLD», а второй — «hello world». Надеюсь, это поможет!

Детальный ответ

Как сделать первую букву заглавной в SQL

Привет! Если ты хочешь узнать, как сделать первую букву заглавной в SQL, то ты попал по адресу. В этой статье мы рассмотрим различные способы достичь этой цели.

1. Использование функции UPPER

Функция UPPER позволяет преобразовать символы строки в верхний регистр. Однако, она не будет изменять остальные символы в строке. Для того чтобы сделать первую букву заглавной, мы можем использовать функцию UPPER в комбинации с функцией SUBSTRING, чтобы выделить первую букву из строки и затем преобразовать ее в верхний регистр. Давайте посмотрим на пример SQL кода:

 SELECT UPPER(SUBSTRING(column_name, 1, 1)) || SUBSTRING(column_name, 2) FROM table_name; 

В приведенном выше коде, мы используем функцию SUBSTRING для выделения первого символа из столбца column_name. Затем мы используем функцию UPPER, чтобы преобразовать этот символ в верхний регистр. Оператор || используется для объединения преобразованного символа с остальными символами в столбце, начиная со второго символа. Таким образом, мы получаем первую букву заглавной, а остальные символы остаются без изменений.

2. Использование функции INITCAP

Если вам нужно сделать первую букву заглавной в каждом слове строки, вы можете использовать функцию INITCAP. Она автоматически преобразует первую букву каждого слова в верхний регистр, а все остальные буквы — в нижний. Пример SQL кода:

 SELECT INITCAP(column_name) FROM table_name; 

В приведенном выше коде, функция INITCAP преобразует первую букву каждого слова в столбце column_name в верхний регистр, а все остальные буквы — в нижний регистр.

3. Использование функции LOWER

Если вам нужно сделать первую букву заглавной, а все остальные в нижнем регистре, вы можете использовать функции LOWER и SUBSTRING для достижения этой цели. Вот пример SQL кода:

 SELECT UPPER(SUBSTRING(column_name, 1, 1)) || LOWER(SUBSTRING(column_name, 2)) FROM table_name; 

В приведенном выше коде, функция SUBSTRING используется для выделения первого символа из столбца column_name, который затем преобразуется в верхний регистр с помощью функции UPPER. Второй символ и все последующие символы в столбце преобразуются в нижний регистр с помощью функции LOWER. Оператор || используется для объединения преобразованных символов.

Вывод

Теперь у тебя есть несколько способов, как сделать первую букву заглавной в SQL. Ты можешь использовать функцию UPPER в сочетании с функцией SUBSTRING, чтобы выделить первый символ и преобразовать его в верхний регистр. Если ты хочешь сделать первую букву заглавной в каждом слове строки, то функция INITCAP подойдет лучше. А если ты хочешь сделать только первую букву заглавной, а все остальные — в нижнем регистре, тогда можно использовать функции UPPER и LOWER в сочетании с функцией SUBSTRING. Надеюсь, эта статья была полезной для тебя! Удачи в изучении SQL!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *