Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как убрать буквенные символы из результата?  [new]
kombala
Member

Откуда:
Сообщений: 41
Мне нужно просуммировать данные из нескольких строк и дело в том, что в них должны содержаться только числовые значения, но пользователь мог написать и текстовые символы, возможно ли отсечь все не_числовые значения из результата?
2 июн 17, 11:49    [20534086]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать буквенные символы из результата?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
kombala
Мне нужно просуммировать данные из нескольких строк и дело в том, что в них должны содержаться только числовые значения, но пользователь мог написать и текстовые символы, возможно ли отсечь все не_числовые значения из результата?

TRY_CONVERT
2 июн 17, 11:52    [20534099]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать буквенные символы из результата?  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
kombala
Мне нужно просуммировать данные из нескольких строк и дело в том, что в них должны содержаться только числовые значения, но пользователь мог написать и текстовые символы, возможно ли отсечь все не_числовые значения из результата?
Как при суммировании результат может содержать нецифровые символы, чтобы их там отсекать?
2 июн 17, 12:08    [20534179]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать буквенные символы из результата?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
Здесь публика недоумевает, так как суммируются числа, а не символы этих чисел.
То есть автор прокололся с типом хранимых данных.
2 июн 17, 12:10    [20534188]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать буквенные символы из результата?  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Владислав Колосов
Здесь публика недоумевает, так как суммируются числа, а не символы этих чисел.
То есть автор прокололся с типом хранимых данных.
Ну а чо ? Бывает, если это внешние копипастные эксельчики:

10р.
15р.
50р.

Нормальное требование.
Не руками же чистить... :)
2 июн 17, 14:52    [20535059]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать буквенные символы из результата?  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
LSV
Владислав Колосов
Здесь публика недоумевает, так как суммируются числа, а не символы этих чисел.
То есть автор прокололся с типом хранимых данных.
Ну а чо ? Бывает, если это внешние копипастные эксельчики:

10р.
15р.
50р.

Нормальное требование.
Не руками же чистить... :)
Чистить в слагаемых - понимаю.
Но в результате, Карл!
Как он в принципе может получиться при таких данных?
2 июн 17, 14:54    [20535067]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать буквенные символы из результата?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
kombala
Мне нужно просуммировать данные из нескольких строк и дело в том, что в них должны содержаться только числовые значения, но пользователь мог написать и текстовые символы, возможно ли отсечь все не_числовые значения из результата?

Например, так
SELECT 
  SUM( CONVERT( INT, CASE
    WHEN ss.[i] > 0 THEN LEFT( t.[x], ss.[i] - 1 )
    ELSE t.[x]
  END ) )
FROM (
  VALUES
    ( '100' ),
    ( '10 р' ),
    ( '22руб' )
  ) t( x ) 
  CROSS APPLY (
    SELECT
      [i] = PATINDEX( '%[^0-9]%', t.[x] )
  ) ss

iap
Чистить в слагаемых - понимаю.
Но в результате, Карл!
Как он в принципе может получиться при таких данных?

Даже самых спокойных достает ТЗ и их постановщики...
2 июн 17, 15:27    [20535237]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать буквенные символы из результата?  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Руслан Дамирович
Даже самых спокойных достает ТЗ и их постановщики
Дело в том, что никто не гарантирует, что в строках может быть несколько чисел, разделённых буквами.
Что же делать в таком случае? Выбирать эти числа из кучи всяких символов и тоже суммировать?
Игнорировать такие строки?
Может, вообще суммировать только строки, в которых только цифры?
2 июн 17, 15:30    [20535263]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать буквенные символы из результата?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
iap
Руслан Дамирович
Даже самых спокойных достает ТЗ и их постановщики
Дело в том, что никто не гарантирует, что в строках может быть несколько чисел, разделённых буквами.
Что же делать в таком случае? Выбирать эти числа из кучи всяких символов и тоже суммировать?
Игнорировать такие строки?
Может, вообще суммировать только строки, в которых только цифры?

Так я же говорю. Тупое ТЗ требует тупого решения. А "после сборки доработать напильником" :)
2 июн 17, 15:33    [20535276]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать буквенные символы из результата?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
LSV,

10р это что за число такое? 5 пишем, 7 на ум пошло? Если это строка представляет собой число, то оно явно не атомарно и требует выполнения правил данных для отношения, то есть превращено в атомарный вид при загрузке.
"Проскакивать" и "потом как-нибудь" при работе с данными нельзя, черный жирный крест.
2 июн 17, 16:12    [20535467]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать буквенные символы из результата?  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Владислав Колосов
LSV,

10р это что за число такое? 5 пишем, 7 на ум пошло? Если это строка представляет собой число, то оно явно не атомарно и требует выполнения правил данных для отношения, то есть превращено в атомарный вид при загрузке.
"Проскакивать" и "потом как-нибудь" при работе с данными нельзя, черный жирный крест.
р= рупь. :) Такое можно иногда увидеть в экселе или в БД-колонке с типом money.
2 июн 17, 16:38    [20535555]     Ответить | Цитировать Сообщить модератору
 Re: Как убрать буквенные символы из результата?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31354
LSV
Ну а чо ? Бывает, если это внешние копипастные эксельчики:

10р.
15р.
50р.

Нормальное требование.
Не руками же чистить... :)

Да, а 50р.47коп. плавно превратятся в 5047 рублей :-)
3 июн 17, 00:24    [20536419]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить