Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: ←Ctrl назад 1 [2] все |
env Member Откуда: Россия, Москва Сообщений: 7439 |
Nevillested, В ssms create table #tmp (s nvarchar(10) collate cyrillic_general_cs_as); insert into #tmp(s) values (N'Abc'), (N'abc'); select * from #tmp where s like N'%ab%'; select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as; В sqlcmd select serverproperty('Collation') as server_collation; select databasepropertyex(db_name(), 'Collation') as db_collation; select db_name() as db_name; Мне не важно знать, как база называется. Главное, чтобы совпадало в ssms и sqlcmd. |
11 фев 21, 18:00 [22279645] Ответить | Цитировать Сообщить модератору |
env Member Откуда: Россия, Москва Сообщений: 7439 |
И также в ssms и sqlcmd к скрипту с табличкой #tmp добавьте запросselect * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%'; , что он вернёт |
12 фев 21, 09:12 [22279866] Ответить | Цитировать Сообщить модератору |
Nevillested Member Откуда: Москва Сообщений: 31 |
env, SQLCMD: server_collation ---------------- Cyrillic_General_CI_AS (1 rows affected) db_collation ------------ Cyrillic_General_CI_AS (1 rows affected) db_name ------- ИМЯ_БД (1 rows affected) Msg 208, Level 16, State 1, Server АДРЕС_СЕРВЕРА, Line 1 Invalid object name '#tmp'. MSSMS: (2 rows affected) s ---------- abc (1 row affected) s ---------- Abc abc (2 rows affected) s ---------- Abc abc (2 rows affected) Плохо понимаю, что происходит и как Вы диагностируете проблему (но не сомневаюсь, что получится) |
12 фев 21, 10:42 [22279897] Ответить | Цитировать Сообщить модератору |
env Member Откуда: Россия, Москва Сообщений: 7439 |
Понятно. Надо как с детьми... Фраза
означает - добавьте в скрипт create table #tmp (s nvarchar(10) collate cyrillic_general_cs_as); insert into #tmp(s) values (N'Abc'), (N'abc'); select * from #tmp where s like N'%ab%'; select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as; запрос select * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%'; и выполните скрипт целиком в sqlcmd Сообщение было отредактировано: 12 фев 21, 11:02 |
||||||||
12 фев 21, 11:08 [22279910] Ответить | Цитировать Сообщить модератору |
env Member Откуда: Россия, Москва Сообщений: 7439 |
совпадает с аналогичным вызовом через ssms? |
||||
12 фев 21, 11:10 [22279914] Ответить | Цитировать Сообщить модератору |
Nevillested Member Откуда: Москва Сообщений: 31 |
env, Я вас неправильно понял. Вот полный отчет на этот скрипт create table #tmp (s nvarchar(10) collate cyrillic_general_cs_as); insert into #tmp(s) values (N'Abc'), (N'abc'); select * from #tmp where s like N'%ab%'; select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as; select * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%'; Результат в MSSMS:
Результат в SQLCMD:
На этот скрипт select serverproperty('Collation') as server_collation; select databasepropertyex(db_name(), 'Collation') as db_collation; select db_name() as db_name; Результат в MSSMS:
Результат в SQLCMD:
Да, результаты совпадают |
||||
12 фев 21, 11:45 [22279933] Ответить | Цитировать Сообщить модератору |
env Member Откуда: Россия, Москва Сообщений: 7439 |
Nevillested, Кажется у меня кончаются идеи. Попробуйте добавить в параметры вызова sqlcmd
-f 65001
|
12 фев 21, 12:21 [22279952] Ответить | Цитировать Сообщить модератору |
Nevillested Member Откуда: Москва Сообщений: 31 |
env, Если ставить в самое начало-выходной файл пустой, если ставить в конец, то: server_collation ---------------- Cyrillic_General_CI_AS (1 rows affected) db_collation ------------ Cyrillic_General_CI_AS (1 rows affected) db_name ------- SAS_LTL (1 rows affected) |
12 фев 21, 12:42 [22279971] Ответить | Цитировать Сообщить модератору |
env Member Откуда: Россия, Москва Сообщений: 7439 |
Nevillested, Меня больше результат скрипта с #tmp табличкой интересует с этим параметром утилиты Сообщение было отредактировано: 12 фев 21, 13:59 |
12 фев 21, 14:06 [22280009] Ответить | Цитировать Сообщить модератору |
Nevillested Member Откуда: Москва Сообщений: 31 |
env, На скрипт с параметром
-f 65001
create table #tmp (s nvarchar(10) collate cyrillic_general_cs_as); insert into #tmp(s) values (N'Abc'), (N'abc'); select * from #tmp where s like N'%ab%'; select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as; select * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%'; Таков результат: (2 rows affected) s - (0 rows affected) s - (0 rows affected) s - (0 rows affected) |
12 фев 21, 14:19 [22280023] Ответить | Цитировать Сообщить модератору |
env Member Откуда: Россия, Москва Сообщений: 7439 |
Nevillested, Чтобы не было недопонимания. Это результат запуска sqlcmd -S адрес_сервера -d моя_БД -E -W -Q -f 65001 "create table #tmp (s nvarchar(10) collate cyrillic_general_cs_as); insert into #tmp(s) values (N'Abc'), (N'abc'); select * from #tmp where s like N'%ab%'; select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as; select * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%';"> file.txt ? Сообщение было отредактировано: 12 фев 21, 14:17 |
12 фев 21, 14:23 [22280027] Ответить | Цитировать Сообщить модератору |
Nevillested Member Откуда: Москва Сообщений: 31 |
env,sqlcmd -S адрес_сервера -f 65001 -d моя_бд -E -s',' -W -Q "create table #tmp (s nvarchar(10) collate cyrillic_general_cs_as); insert into #tmp(s) values (N'Abc'), (N'abc'); select * from #tmp where s like N'%ab%'; select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as; select * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%';" > file.txt Вот свежак скопировал-вставил, добавил только переносы на новую строку для читабельности |
12 фев 21, 14:27 [22280030] Ответить | Цитировать Сообщить модератору |
Nevillested Member Откуда: Москва Сообщений: 31 |
Если ставить параметр -Q не непосредственно перед самим текстом моего запроса, то он дает пустой файл, т.е. как Вы показали. Скопировал Ваш код, вставил, поправил свой адрес сервера, поправил БД, поменял местами -Q и -f 65001 такой же результат: (2 rows affected) s - (0 rows affected) s - (0 rows affected) s - (0 rows affected) |
||||
12 фев 21, 14:31 [22280036] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9635 |
1. Облегчите жизнь себе и серверу и упростите запрос declare @a DATE set @a=cast(getdate() as date); SELECT top (1) a.min_run, convert(varchar,(cast((a.max_run - a.min_run) as time)), 20) as work, a.max_run, t.statik FROM [table] t cross apply ( select min(time_run), max(time_end) from [table] where cast(time_run as date) = @a and name like '%olga%' and name not like '%ivanova%' ) a(min_run, max_run); 2. Есть возможность получить планы выполнения? |
||||
12 фев 21, 16:41 [22280148] Ответить | Цитировать Сообщить модератору |
Nevillested Member Откуда: Москва Сообщений: 31 |
Колдовство! Я не понял нихрена с Вашего кода, надо сидеть прям разбираться как это вообще произошло. Заменил на свои данные, ни шагу влево/вправо Проверил в MSSQL-супер, данные такие же, как у меня Проверил в sqlcmd-снова нулы... UPD Проверил опытным путем, косяк в where: если я уберу name like '%olga%' и все остальное оставлю-отрабатывает. или если я уберу name not like '%ivanova%' и все остальное оставлю-также отрабатывает. пачиму... Сообщение было отредактировано: 12 фев 21, 18:07 |
||||||||
12 фев 21, 18:12 [22280182] Ответить | Цитировать Сообщить модератору |
Nevillested Member Откуда: Москва Сообщений: 31 |
Вот это я понимаю руки откуда надо) |
||||||||
12 фев 21, 18:15 [22280184] Ответить | Цитировать Сообщить модератору |
Nevillested Member Откуда: Москва Сообщений: 31 |
Попробовал фильтр IN и перечислил конкретно нужные statik через запятую Результат уже лучше: min_run'work'max_run'statik ---------'------------------'---------'------------- Дата_время'Время'NULL'NICE! (1 rows affected) Теперь надо понять, почему даёт null в третьем столбце, хотя в mssql никакого нула на этот же запрос нету. |
15 фев 21, 11:52 [22281007] Ответить | Цитировать Сообщить модератору |
Nevillested Member Откуда: Москва Сообщений: 31 |
Короче я немного ошибся, и все-таки работает и третий столбец. Решение конечно через костыль, но всё же...решение |
||||
15 фев 21, 16:32 [22281229] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: ←Ctrl назад 1 [2] все |
Все форумы / Microsoft SQL Server | ![]() |