powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / NULL SQLCMD
43 сообщений из 43, показаны все 2 страниц
NULL SQLCMD
    #40044094
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер, товарищи.
Оговорюсь сразу, сделал уже 2 похожих батника, примерно понимаю что есть что.
С третьим батником-беда. Бьюсь как об стенку горох.
К сути, есть батник, он должен сделать селект и выгрузить всё в файл. (на самом деле он еще много что должен сделать, как и предыдущие два, но на третьем я встал в самом начале.)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
sqlcmd -S адрес_сервера -d моя_БД -E -s',' -W -Q 
"declare @a DATE set @a=cast(getdate() as date);
select top (1) 
(подзапрос 1) as pod1,
((подзапрос 2)-(подзапрос 1)) as dif_pod,
(подзапрос_2) as pod2, 
statistiks
from table"> file.txt


Нет, у меня весь код находится в одной сплошной строке, без перехода на новую строку, тут я написал так-для читабельности и наглядности.

Проблема-батник отрабатывает, все ок, но результат у меня получается в виде
Код: sql
1.
2.
3.
4.
5.
pod1'dif_pod'pod2'statistiks
---------'------------------'---------'-------------
NULL'NULL'NULL'NICE!

(1 rows affected)


Если я этот же запрос выполню на клиенте mssql-все окей, даёт нормальные данные, а не NULL.
NULL'ы эти-данные типа datetime.
При чем, сделал уже 2 максимально похожих батника, но по другой таблице этой же БД, и другой таблице другой БД-все супер, а здесь почему-то НУЛЫ.
Это может помочь в решении-если из подзапросов1/2 убрать WHERE, не дает нулы, но дело в том, что where мне там нужно)
Есть мысли?
Заранее благодарен
_____
версия 2014 standart
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044101
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Это может помочь в решении-если из подзапросов1/2 убрать WHERE, не дает нулы, но дело в том, что where мне там нужно)
Есть мысли?"

А где же там вхере?
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044107
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

От collation, до ansi nulls - показывайте подробнее
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044116
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

напишите

Код: sql
1.
set ansi_nulls on; declare @a ...



и попробуйте

Код: sql
1.
set ansi_nulls off; declare @a ...
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044304
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
Nevillested,

От collation, до ansi nulls - показывайте подробнее


Что показывать? Не совсем Вас понял

Владислав Колосов
Nevillested,

напишите

Код: sql
1.
set ansi_nulls on; declare @a ...



и попробуйте

Код: sql
1.
set ansi_nulls off; declare @a ...



не сработало

Ролг Хупин
"Это может помочь в решении-если из подзапросов1/2 убрать WHERE, не дает нулы, но дело в том, что where мне там нужно)
Есть мысли?"

А где же там вхере?

Я его уместил в "подзапрос". Ниже все так как есть, только там еще идет union all, но я его убрал, как и второй запрос, который шел под унионом. (все равно даёт нулы, даже без "унион+второй запрос")
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare @a DATE set @a=cast(getdate() as date);   
SELECT top (1)   
(select min(time_run)    FROM [table]   where cast(time_run as date)=@a) as min_run,
(convert(varchar,(cast(((select max(time_end) FROM [table] where cast(time_run as date)=@a) 
-
(select min(time_run) FROM [table] where cast(time_run as date)=@a)) as time)), 20)) as work,
(select max(time_end)  FROM [table]   where cast(time_run as date)=@a) as max_run,
statik 
FROM [table]   



Результат:

min_run'work'max_run'statik
---------'------------------'---------'----------
NULL'NULL'NULL'NICE!

(1 rows affected)
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044318
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

А time_run какого типа? varchar(n)?
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044342
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

datetime все, кроме statik
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044350
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
datetime все
Тогда, очень вероятно, вы не в той БД запускаете скрипт.
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044351
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
Что показывать?

Полный запрос. И уточнить типы данных по каждому полю, к которому применяются фильтры или по которому возможна сортировка результата.

Код в 22279319 соответствует действительности или есть какие-то опущенные фильтры?
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044358
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
Nevillested
datetime все
Тогда, очень вероятно, вы не в той БД запускаете скрипт.

Проверил БД, проверил сервер, всё то, что надо, даже коллегу попросил посмотреть, не долблюсь ли я в глаза. Кажется, оба долбимся.
env
Nevillested
Что показывать?

Полный запрос. И уточнить типы данных по каждому полю, к которому применяются фильтры или по которому возможна сортировка результата.

Код в 22279319 соответствует действительности или есть какие-то опущенные фильтры?

Вот прямо-таки полный со всеми фильтрами

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare @a DATE set @a=cast(getdate() as date);   
SELECT top (1)   
(select min(time_run)    FROM [table]   where cast(time_run as date)=@a and name like '%olga%' and name not like '%ivanova%') as min_run,
(convert(varchar,(cast(((select max(time_end) FROM [table] where cast(time_run as date)=@a and name like '%olga%' and name not like '%ivanova%') 
-
(select min(time_run) FROM [table] where cast(time_run as date)=@a and name like '%olga%' and name not like '%ivanova%')) as time)), 20)) as work,
(select max(time_end)  FROM [table]   where cast(time_run as date)=@a and name like '%olga%' and name not like '%ivanova%') as max_run,
statik 
FROM [table] 


name-nvarchar
time_run-datetime
time_end-datetime
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044359
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
Код: sql
1.
name like N'%olga%' and name not like N'%ivanova%'



упд. Возможно ещё явно стоит указать, COLLATE для литералов, чтобы был явный _CI
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044373
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
Nevillested
Код: sql
1.
name like N'%olga%' and name not like N'%ivanova%'



упд. Возможно ещё явно стоит указать, COLLATE для литералов, чтобы был явный _CI

что за N? В моем коде такого нет
Не совсем Вас понял, что значит указать COLLATE для литералов, чтобы был явный _CI?
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044377
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
В моем коде такого нет

Добавьте и запустите.
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044380
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
что значит указать COLLATE для литералов, чтобы был явный _CI

Ровно то, что написано - добавить после литерала инструкцию COLLATE с совпадающими для ваших nvarchar полей значениями кодовой страницы и параметров сортировки и явным указанием C ase I nsensitive, если нет уверенности, что значения в таблице также как и в литерале строго в нижнем регистре.
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044385
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
Nevillested
В моем коде такого нет

Добавьте и запустите.

Не сработало
env
Nevillested
что значит указать COLLATE для литералов, чтобы был явный _CI

Ровно то, что написано - добавить после литерала инструкцию COLLATE с совпадающими для ваших nvarchar полей значениями кодовой страницы и параметров сортировки и явным указанием C ase I nsensitive, если нет уверенности, что значения в таблице также как и в литерале строго в нижнем регистре.

Не понимаю того, что Вы говорите, просто потому что не знаю, что вообще это такое. Сейчас погуглю, разберусь и дам знать о результатах позже
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044393
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
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%';

  
S
---
abc


select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as;

S
---
Abc
abc
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044395
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

Клиент и sqlcmd работают под одним и тем же логином?
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044455
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
Nevillested,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
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%';

  
S
---
abc


select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as;

S
---
Abc
abc

к сожалению, нет прав на создание таблиц, только на select

invm, да, под одним и тем же логином
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044475
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
env
Nevillested,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
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%';

  
S
---
abc


select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as;

S
---
Abc
abc

к сожалению, нет прав на создание таблиц, только на select

invm, да, под одним и тем же логином
Нет прав на создание таблиц, говорите. Т.е. вы даже не попробовали выполнить этот код.
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044478
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
к сожалению, нет прав на создание таблиц
Временные таблицы могут создавать все.
Nevillested
invm, да, под одним и тем же логином
Тогда клиент (если это SSMS) и sqlcmd и если все настройки по-дефолту, должны отличаться только в части quoted_identifier.
Добавьте к вызову sqlcmd ключ -I
А вообще, лучше профайлером сравнить опции соединения в обоих случаях.
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044479
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

И, кстати, какой-то у вас разделитель столбцов странный... вы уверены, что sqlcmd правильно интерпретирует вашу закавыченную запятую? В двойные кавычки брать ее не пробовали?
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044490
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
env
Nevillested,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
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%';

  
S
---
abc


select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as;

S
---
Abc
abc

к сожалению, нет прав на создание таблиц, только на select

invm, да, под одним и тем же логином


к счастью , нет прав на создание таблиц, только на select
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044499
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ennor Tiegael
Nevillested
пропущено...
к сожалению, нет прав на создание таблиц, только на select

invm, да, под одним и тем же логином
Нет прав на создание таблиц, говорите. Т.е. вы даже не попробовали выполнить этот код.

Да, по неопытности своей, у меня на create-сразу сработал триггер)

На код...

Код: sql
1.
2.
3.
4.
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;



Такой результат:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
(2 rows affected)
s
-

(0 rows affected)
s
-

(0 rows affected)



Ennor Tiegael
Nevillested,

И, кстати, какой-то у вас разделитель столбцов странный... вы уверены, что sqlcmd правильно интерпретирует вашу закавыченную запятую? В двойные кавычки брать ее не пробовали?


Пробовал, все равно нулы.


Ролг Хупин
Nevillested
пропущено...
к сожалению, нет прав на создание таблиц, только на select

invm, да, под одним и тем же логином


к счастью , нет прав на создание таблиц, только на select



Ох, ну тут что правда то правда, тут Вы в яблочко попали)
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044530
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

А в ssms что возвращает тот же код? И покажите, что возвращает

Код: sql
1.
2.
3.
select serverproperty('Collation') as server_collation;
select databasepropertyex(db_name(), 'Collation') as db_collation;
select db_name() as db_name;
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044542
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
Nevillested,

А в ssms что возвращает тот же код? И покажите, что возвращает

Код: sql
1.
2.
3.
select serverproperty('Collation') as server_collation;
select databasepropertyex(db_name(), 'Collation') as db_collation;
select db_name() as db_name;




Прошу прощения, название бд-гос.тайна)
(теперь вы понимаете да, это всё объясняет:D)
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044549
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

В ssms
Код: sql
1.
2.
3.
4.
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
Код: sql
1.
2.
3.
select serverproperty('Collation') as server_collation;
select databasepropertyex(db_name(), 'Collation') as db_collation;
select db_name() as db_name;


Мне не важно знать, как база называется. Главное, чтобы совпадало в ssms и sqlcmd.
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044724
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И также в ssms и sqlcmd к скрипту с табличкой #tmp добавьте запрос
Код: sql
1.
select * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%';


, что он вернёт
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044744
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

SQLCMD:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
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:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
(2 rows affected)
s
----------
abc

(1 row affected)

s
----------
Abc
abc

(2 rows affected)

s
----------
Abc
abc

(2 rows affected)



Плохо понимаю, что происходит и как Вы диагностируете проблему (но не сомневаюсь, что получится)
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044751
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
Код: sql
1.
Invalid object name '#tmp'.


Понятно. Надо как с детьми...

Фраза
env
к скрипту с табличкой #tmp добавьте запрос

означает - добавьте в скрипт
Код: sql
1.
2.
3.
4.
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;


запрос
Код: sql
1.
select * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%';


и выполните скрипт целиком в sqlcmd
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044753
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
Код: sql
1.
2.
3.
db_name
-------
ИМЯ_БД


совпадает с аналогичным вызовом через ssms?
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044765
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env, Я вас неправильно понял. Вот полный отчет

на этот скрипт
Код: sql
1.
2.
3.
4.
5.
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:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
(2 rows affected)
s
----------
abc

(1 row affected)

s
----------
Abc
abc

(2 rows affected)

s
----------
Abc
abc

(2 rows affected)



Результат в SQLCMD:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
(2 rows affected)
s
-

(0 rows affected)
s
-

(0 rows affected)
s
-

(0 rows affected)



На этот скрипт
Код: sql
1.
2.
3.
select serverproperty('Collation') as server_collation;
select databasepropertyex(db_name(), 'Collation') as db_collation;
select db_name() as db_name;



Результат в MSSMS:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
server_collation
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Cyrillic_General_CI_AS

(1 row affected)

db_collation
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Cyrillic_General_CI_AS

(1 row affected)

db_name
--------------------------------------------------------------------------------------------------------------------------------
МОЯ_БД

(1 row affected)



Результат в SQLCMD:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
server_collation
----------------
Cyrillic_General_CI_AS

(1 rows affected)
db_collation
------------
Cyrillic_General_CI_AS

(1 rows affected)
db_name
-------
МОЯ_БД

(1 rows affected)



Да, результаты совпадают
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044778
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

Кажется у меня кончаются идеи. Попробуйте добавить в параметры вызова sqlcmd
Код: sql
1.
-f 65001
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044786
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

Если ставить в самое начало-выходной файл пустой, если ставить в конец, то:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
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)
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044816
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

Меня больше результат скрипта с #tmp табличкой интересует с этим параметром утилиты
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044827
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env, На скрипт с параметром
Код: sql
1.
-f 65001


Код: sql
1.
2.
3.
4.
5.
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%';


Таков результат:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
(2 rows affected)
s
-

(0 rows affected)
s
-

(0 rows affected)
s
-

(0 rows affected)
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044831
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

Чтобы не было недопонимания. Это результат запуска
Код: sql
1.
2.
3.
4.
5.
6.
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


?
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044834
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

Код: sql
1.
2.
3.
4.
5.
6.
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


Вот свежак скопировал-вставил, добавил только переносы на новую строку для читабельности
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044837
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
Nevillested,
Код: sql
1.
2.
3.
4.
5.
6.
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



Если ставить параметр -Q не непосредственно перед самим текстом моего запроса, то он дает пустой файл, т.е. как Вы показали.
Скопировал Ваш код, вставил, поправил свой адрес сервера, поправил БД, поменял местами -Q и -f 65001 такой же результат:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
(2 rows affected)
s
-

(0 rows affected)
s
-

(0 rows affected)
s
-

(0 rows affected)
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044896
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
Вот прямо-таки полный со всеми фильтрами
Жуть.

1. Облегчите жизнь себе и серверу и упростите запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
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. Есть возможность получить планы выполнения?
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044920
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
Nevillested
Вот прямо-таки полный со всеми фильтрами
Жуть.

1. Облегчите жизнь себе и серверу и упростите запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
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. Есть возможность получить планы выполнения?


Колдовство!
Я не понял нихрена с Вашего кода, надо сидеть прям разбираться как это вообще произошло.
Заменил на свои данные, ни шагу влево/вправо
Проверил в MSSQL-супер, данные такие же, как у меня
Проверил в sqlcmd-снова нулы...

UPD
Проверил опытным путем, косяк в where:
если я уберу
Код: sql
1.
name like '%olga%'


и все остальное оставлю-отрабатывает.

или если я уберу
Код: sql
1.
name not like '%ivanova%'


и все остальное оставлю-также отрабатывает.
пачиму...
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044921
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
Nevillested
Вот прямо-таки полный со всеми фильтрами
Жуть.

1. Облегчите жизнь себе и серверу и упростите запрос

Вот это я понимаю руки откуда надо)
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40045390
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал фильтр IN и перечислил конкретно нужные statik через запятую
Результат уже лучше:
Код: sql
1.
2.
3.
4.
5.
min_run'work'max_run'statik
---------'------------------'---------'-------------
Дата_время'Время'NULL'NICE!

(1 rows affected)


Теперь надо понять, почему даёт null в третьем столбце, хотя в mssql никакого нула на этот же запрос нету.
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40045522
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nevillested
Попробовал фильтр IN и перечислил конкретно нужные statik через запятую
Результат уже лучше:
Код: sql
1.
2.
3.
4.
5.
min_run'work'max_run'statik
---------'------------------'---------'-------------
Дата_время'Время'NULL'NICE!

(1 rows affected)


Теперь надо понять, почему даёт null в третьем столбце, хотя в mssql никакого нула на этот же запрос нету.


Короче я немного ошибся, и все-таки работает и третий столбец.
Решение конечно через костыль, но всё же...решение
...
Рейтинг: 0 / 0
43 сообщений из 43, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / NULL SQLCMD
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]