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

Откуда:
Сообщений: 1102
после выборки в поле выдаётся сильно длинная информация. наприер:
операционная система microsoft windows xp professional, а надо сократить до понятных сокращений: ОС win xp или хотя бы windows xp
подскажите, как такое сделать?? подозреваю через like, но не знаю как
10 авг 12, 15:30    [12994498]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
Bator
Member

Откуда: Порт пяти морей
Сообщений: 439
replace
10 авг 12, 16:09    [12994783]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
seeerg_23,

подозреваю, что в такой постановке придётся заводить словарь :)
10 авг 12, 20:15    [12996372]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
CodeGenerator
Member

Откуда:
Сообщений: 71
Создайте еще одно поле с сокращенным названием и вставляйте туда любые сокращения как только придумаете. И извращений никаких не надо.
10 авг 12, 20:44    [12996445]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
помогите правильно написать Raplace. Нужно сделать сокращения. сейчас запрос выдаёт такую информацию:
select id, os
from t1

ID..............................OS
123......Microsoft Windows 7 Профессиональная |C:\windows|\Device\Harddisk0\Partition1
124......Microsoft Windows XP Professional|C:\WINDOWS|\Device\Harddisk0\Partition1

нужно сделать так, чтобы выводить только версию виндовс, те Windows 7, Windows XP, Linux и тд
делаю так:
1.
select id, replace ('Microsoft Windows 7 Профессиональная |C:\windows|\Device\Harddisk0\Partition1', 'Профессиональная |C:\windows|\Device\Harddisk0\Partition1', ' ')
from t1
результат:

ID..............................OS
123......Microsoft Windows 7
124......Microsoft Windows 7 (а должно быть тут XP)

или так:

select id, replace ('Microsoft Windows 7 Профессиональная |C:\windows|\Device\Harddisk0\Partition1', '|C:\windows|\Device\Harddisk0\Partition1', ' ')
from t1
результат:

ID..............................OS
123......Microsoft Windows 7 ??????????
124......Microsoft Windows 7 ?????????? (а должно быть тут XP)

почему появляются ?????? и почему только одна версия ОС отображается, те почему XP не отображается??

нужно сократить до Windows 7 или Windows XP, те слово Microsoft тоже убрать. пробую так:

select id, replace ('Microsoft Windows 7 Профессиональная |C:\windows|\Device\Harddisk0\Partition1', 'Microsoft профессиональная|C:\windows|\Device\Harddisk0\Partition1', ' ')
from t1
результат:
ID..............................OS
123.......Microsoft Windows 7 ???????????????? |C:\windows|\Device\Harddisk0\Partition1
124.......Microsoft Windows 7 ???????????????? |C:\windows|\Device\Harddisk0\Partition1
13 авг 12, 10:08    [13002407]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
Glory
Member

Откуда:
Сообщений: 104751
seeerg_23
делаю так:
1.
select id, replace ('Microsoft Windows 7 Профессиональная |C:\windows|\Device\Harddisk0\Partition1', 'Профессиональная |C:\windows|\Device\Harddisk0\Partition1', ' ')
from t1
результат:

ID..............................OS
123......Microsoft Windows 7
124......Microsoft Windows 7 (а должно быть тут XP)

Почему "должно быть тут XP", если у вас для всех записей replace будет возвращать одинаковый результат
13 авг 12, 10:18    [13002452]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31822
seeerg_23
почему появляются ?????? и почему только одна версия ОС отображается, те почему XP не отображается??
Странные у вас запросы, с заменой текста внутри константы :-)

Как вы думаете, что вернёт для всех записей запрос:
select 1+1 from t1
13 авг 12, 10:30    [13002521]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
я беру конкретную строку и делаю сокращение или замену символов. тогда REPLACE в моём случае не подходит??? или как мне сделать универсальное сокращение??
13 авг 12, 10:33    [13002533]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
alexeyvg
seeerg_23
почему появляются ?????? и почему только одна версия ОС отображается, те почему XP не отображается??
Странные у вас запросы, с заменой текста внутри константы :-)

Как вы думаете, что вернёт для всех записей запрос:
select 1+1 from t1


выдаст 1 столбец в каждой строке по 2
13 авг 12, 10:35    [13002551]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
Glory
Member

Откуда:
Сообщений: 104751
seeerg_23
я беру конкретную строку и делаю сокращение или замену символов.

Покажите, где в вашем replace это самое "беру конкретную строку"
13 авг 12, 10:39    [13002568]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31822
seeerg_23
alexeyvg
пропущено...
Странные у вас запросы, с заменой текста внутри константы :-)

Как вы думаете, что вернёт для всех записей запрос:
select 1+1 from t1



выдаст 1 столбец в каждой строке по 2
Ну так вот и у вас для всех записей возвращает одинаковую строку.

Это ответ на вопрос "почему только одна версия ОС отображается"


seeerg_23
почему появляются ??????
Наверное, неправильно передаются русские символы.

Попробуйте:
select id, replace (N'Microsoft Windows 7 Профессиональная |C:\windows|\Device\Harddisk0\Partition1', N'|C:\windows|\Device\Harddisk0\Partition1', ' ')

Вы бы прочитали, что делает функция replace
13 авг 12, 10:42    [13002581]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
alexeyvg
seeerg_23
пропущено...


выдаст 1 столбец в каждой строке по 2
Ну так вот и у вас для всех записей возвращает одинаковую строку.

Это ответ на вопрос "почему только одна версия ОС отображается"


seeerg_23
почему появляются ??????
Наверное, неправильно передаются русские символы.

Попробуйте:
select id, replace (N'Microsoft Windows 7 Профессиональная |C:\windows|\Device\Harddisk0\Partition1', N'|C:\windows|\Device\Harddisk0\Partition1', ' ')

Вы бы прочитали, что делает функция replace


выдаёт:
ID..............................OS
123......Microsoft Windows 7 Профессиональная
124......Microsoft Windows 7 Профессиональная (а тут должно быть XP)
13 авг 12, 10:48    [13002617]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
Glory
seeerg_23
я беру конкретную строку и делаю сокращение или замену символов.

Покажите, где в вашем replace это самое "беру конкретную строку"


replace ('Microsoft Windows 7 Профессиональная |C:\windows|\Device\Harddisk0\Partition1'....

это конкретная строка, для которой идёт замещение символов. или не так??
13 авг 12, 10:50    [13002623]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
Glory
Member

Откуда:
Сообщений: 104751
seeerg_23
replace ('Microsoft Windows 7 Профессиональная |C:\windows|\Device\Harddisk0\Partition1'....

это конкретная строка, для которой идёт замещение символов. или не так??

Да что вы говорите.
Я вижу тут две символьные константы. С чего вдруг сервер будет брать какие то значения из таблицы ?
13 авг 12, 10:52    [13002636]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
как тогда взять значение из таблицы и заменить его на более короткое?
13 авг 12, 11:07    [13002709]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
Glory
Member

Откуда:
Сообщений: 104751
seeerg_23
как тогда взять значение из таблицы и заменить его на более короткое?

Наверное нужно использовать имя столбца
Иначе как сервер поймет, что ему "взять значение из таблицы", а не у вас из головы ?
13 авг 12, 11:10    [13002720]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31822
seeerg_23
как тогда взять значение из таблицы и заменить его на более короткое?
Я думаю, нужно как то упомянуть поле, из которого "нужно брать значение из таблицы".

Вы что, думаете, функция replace заменяет текст во всех полях? :-)

Повторю совет - прочитайте в хелпе про функцию replace, посмотрите примеры.
seeerg_23
Glory
Покажите, где в вашем replace это самое "беру конкретную строку"

replace ('Microsoft Windows 7 Профессиональная |C:\windows|\Device\Harddisk0\Partition1'....
это конкретная строка, для которой идёт замещение символов. или не так??
Не так, это константа, для которой идёт замещение символов.
13 авг 12, 11:12    [13002731]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
ну видимо и функция другая будет, а не replace??
13 авг 12, 11:14    [13002740]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
Glory
Member

Откуда:
Сообщений: 104751
seeerg_23
ну видимо и функция другая будет, а не replace??

Видимо вам надо выбрать другой род деятельности вместо программирования.
13 авг 12, 11:22    [13002777]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31822
seeerg_23
ну видимо и функция другая будет, а не replace??
Почему, для замены подстроки в строке используется как раз функция replace.
13 авг 12, 11:23    [13002783]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
тогда мне не понятно совсем. про Replace читал.

Replace ('строка замены', 'где заменить в строке замены', 'на что заменить')

можно подсказку, как добавить имя столбца?
13 авг 12, 11:32    [13002844]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31822
seeerg_23
тогда мне не понятно совсем. про Replace читал.

Replace ('строка замены', 'где заменить в строке замены', 'на что заменить')

можно подсказку, как добавить имя столбца?
Ужас.

Наверное, вместо 'строка замены' нужно подставить имя поля
13 авг 12, 11:41    [13002919]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
Sekoka
Member

Откуда:
Сообщений: 73
DECLARE @repl as table (FULL_NAME nvarchar(max), SHORT_NAME nvarchar(max))

INSERT INTO @repl (FULL_NAME,SHORT_NAME)
SELECT 'Microsoft Windows XP Professional', 'MS Win XP'
UNION
SELECT 'Microsoft Windows 7 Профессиональная', 'MS Win 7'

SELECT (SELECT SHORT_NAME FROM @repl WHERE OS like '%'+FULL_NAME+'%') as SHORT_NAME_OS
FROM t1
13 авг 12, 11:53    [13002988]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
seeerg_23
Member

Откуда:
Сообщений: 1102
работает. replace (OS, 'Профессиональная |C:\windows|\Device\Harddisk0\Partition1', ' ')
результат:
ID..............................OS
123......Microsoft Windows 7
124......Microsoft Windows XP Professional |C:\windows|\Device\Harddisk0\Partition1

вопрос1. как убрать слово Windows ??
вопрос2. как применить тоже самое преобразование для этого же столбца с англ символами??

REPLACE((Name0, N'Профессиональная |C:\windows|\Device\Harddisk0\Partition1', ' ') and (Name0, 'Professional |C:\windows|\Device\Harddisk0\Partition1', ' )) - не катит, ситаксич ошибка

или
((REPLACE(Name0, N'Профессиональная |C:\windows|\Device\Harddisk0\Partition1', ' ')) and (replace(Name0, 'Professional |C:\windows|\Device\Harddisk0\Partition1', ' ))) AS OS - не катит, ситаксич ошибка
13 авг 12, 12:03    [13003045]     Ответить | Цитировать Сообщить модератору
 Re: сократить слова  [new]
Glory
Member

Откуда:
Сообщений: 104751
seeerg_23
не катит, ситаксич ошибка

Ну так прочитайте уже про синтаксис в хелпе
Сколько можно его придумывать самому ?
13 авг 12, 12:16    [13003118]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить