Я пытаюсь обрезать некоторую информацию из таблицы. В столбце есть число, а затем слово (например, 5 яблок). Мне просто нужен номер, чтобы я мог суммировать общее количество яблок. Я не могу использовать счет, потому что мне нужно идти по значению (например, 5 яблок для одного, 3 яблок для другого), и счетчик просто вернет, что есть 2 записи и не тянет 5 и 3.
Я пробовал использовать СУММ, но он тоже не работает.
Может ли кто-нибудь помочь (или указать мне на учебник), который объяснит, как я могу обрезать/извлечь информацию из значения столбцов? Я искал и только смог найти, как обрезать пробелы (что было бы неплохо, если бы я мог обрезать все и после пробелов, тогда я просто смогу обрезать после номера)
Комбинация sum, cast, substring, charindex будет выполнять работу, я думаю:
Найти первое появление пробела, взять подстроку столбца до первой позиции пробела, отличить его как целое и суммировать.
SELECT SUM(CAST(SUBSTRING(yourColumn, 1, CHARINDEX(' ', yourColumn) -1) AS INT))
FROM yourTable
Изменить: сначала char равно 1 в подстроке
Вы можете использовать patindex
для поиска первой не-цифры, а затем substring
для получения только числовой части строки:
declare @fruit table (id int identity, description varchar(50))
insert @fruit (description) select '3 apples'
union all select '10 apples'
union all select '12 apples'
select sum(cast(substring(description, 1, FirstNonDigit) as int))
from (
select patindex('%[^0-9]%', description) FirstNonDigit
, description
from @fruit
) as SubQuery
where FirstNonDigit > 0
Отпечатает 25
.
Сказав это, хороший дизайн таблицы поместит число и описание в два разных столбца.
Похоже, вам нужно SubString с CharIndex, Вставить/преобразовать полученное "число" в int, а затем использовать SUM.
Предполагая, что ваше "число" всегда сопровождается "Яблоки" (непроверенные):
SELECT SUM(CONVERT(int,SUBSTRING(column_name,0,CharIndex(' Apple',column_name)-1))) as numApples FROM table_name;