Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
seeerg_23 Member Откуда: Сообщений: 1102 |
после выборки в поле выдаётся сильно длинная информация. наприер: операционная система microsoft windows xp professional, а надо сократить до понятных сокращений: ОС win xp или хотя бы windows xp подскажите, как такое сделать?? подозреваю через like, но не знаю как |
10 авг 12, 15:30 [12994498] Ответить | Цитировать Сообщить модератору |
Bator Member Откуда: Порт пяти морей Сообщений: 439 |
replace
|
10 авг 12, 16:09 [12994783] Ответить | Цитировать Сообщить модератору |
Serg_77m Member Откуда: Донецк Сообщений: 237 |
seeerg_23, подозреваю, что в такой постановке придётся заводить словарь :) |
10 авг 12, 20:15 [12996372] Ответить | Цитировать Сообщить модератору |
CodeGenerator Member Откуда: Сообщений: 71 |
Создайте еще одно поле с сокращенным названием и вставляйте туда любые сокращения как только придумаете. И извращений никаких не надо. |
10 авг 12, 20:44 [12996445] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Почему "должно быть тут XP", если у вас для всех записей replace будет возвращать одинаковый результат |
||
13 авг 12, 10:18 [13002452] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31822 |
Как вы думаете, что вернёт для всех записей запрос: select 1+1 from t1 |
||
13 авг 12, 10:30 [13002521] Ответить | Цитировать Сообщить модератору |
seeerg_23 Member Откуда: Сообщений: 1102 |
я беру конкретную строку и делаю сокращение или замену символов. тогда REPLACE в моём случае не подходит??? или как мне сделать универсальное сокращение?? |
13 авг 12, 10:33 [13002533] Ответить | Цитировать Сообщить модератору |
seeerg_23 Member Откуда: Сообщений: 1102 |
выдаст 1 столбец в каждой строке по 2 |
||||
13 авг 12, 10:35 [13002551] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Покажите, где в вашем replace это самое "беру конкретную строку" |
||
13 авг 12, 10:39 [13002568] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31822 |
Это ответ на вопрос "почему только одна версия ОС отображается"
Попробуйте: select id, replace (N'Microsoft Windows 7 Профессиональная |C:\windows|\Device\Harddisk0\Partition1', N'|C:\windows|\Device\Harddisk0\Partition1', ' ') Вы бы прочитали, что делает функция replace |
||||||
13 авг 12, 10:42 [13002581] Ответить | Цитировать Сообщить модератору |
seeerg_23 Member Откуда: Сообщений: 1102 |
выдаёт: ID..............................OS 123......Microsoft Windows 7 Профессиональная 124......Microsoft Windows 7 Профессиональная (а тут должно быть XP) |
||||||
13 авг 12, 10:48 [13002617] Ответить | Цитировать Сообщить модератору |
seeerg_23 Member Откуда: Сообщений: 1102 |
replace ('Microsoft Windows 7 Профессиональная |C:\windows|\Device\Harddisk0\Partition1'.... это конкретная строка, для которой идёт замещение символов. или не так?? |
||||
13 авг 12, 10:50 [13002623] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Да что вы говорите. Я вижу тут две символьные константы. С чего вдруг сервер будет брать какие то значения из таблицы ? |
||
13 авг 12, 10:52 [13002636] Ответить | Цитировать Сообщить модератору |
seeerg_23 Member Откуда: Сообщений: 1102 |
как тогда взять значение из таблицы и заменить его на более короткое? |
13 авг 12, 11:07 [13002709] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Наверное нужно использовать имя столбца Иначе как сервер поймет, что ему "взять значение из таблицы", а не у вас из головы ? |
||
13 авг 12, 11:10 [13002720] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31822 |
Вы что, думаете, функция replace заменяет текст во всех полях? :-) Повторю совет - прочитайте в хелпе про функцию replace, посмотрите примеры.
|
||||||
13 авг 12, 11:12 [13002731] Ответить | Цитировать Сообщить модератору |
seeerg_23 Member Откуда: Сообщений: 1102 |
ну видимо и функция другая будет, а не replace?? |
13 авг 12, 11:14 [13002740] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Видимо вам надо выбрать другой род деятельности вместо программирования. |
||
13 авг 12, 11:22 [13002777] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31822 |
|
||
13 авг 12, 11:23 [13002783] Ответить | Цитировать Сообщить модератору |
seeerg_23 Member Откуда: Сообщений: 1102 |
тогда мне не понятно совсем. про Replace читал. Replace ('строка замены', 'где заменить в строке замены', 'на что заменить') можно подсказку, как добавить имя столбца? |
13 авг 12, 11:32 [13002844] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31822 |
Наверное, вместо 'строка замены' нужно подставить имя поля |
||
13 авг 12, 11:41 [13002919] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Ну так прочитайте уже про синтаксис в хелпе Сколько можно его придумывать самому ? |
||
13 авг 12, 12:16 [13003118] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |