powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / NULL SQLCMD
25 сообщений из 43, страница 1 из 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
25 сообщений из 43, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / NULL SQLCMD
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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