Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
AnMoOr
Member

Откуда: Moscow
Сообщений: 77
Запрос:
 DECLARE @CurNoHoursVoucherINN  nchar(25),@CurNoHoursVoucherINN1  nvarchar(255), @CHARReportPeriodFromExcel nvarchar, @DATEReportPeriodFromExcel float, @ResReportPeriodFromExcel datetime

SET @DATEReportPeriodFromExcel = (SELECT TOP 1 POAgrDate FROM [TransferPricesV01].[dbo].['1st pass$'] ORDER BY POAgrDate DESC)
SET @ResReportPeriodFromExcel = (SELECT CAST(CAST(@DATEReportPeriodFromExcel AS nvarchar) as datetime))

DECLARE NoHoursVoucher_cursor CURSOR FOR 
		SELECT LTRIM(RTRIM([TransferPricesV01].[dbo].[Organization_CounterPart].CounterpartINN)) 
						 FROM         [TransferPricesV01].[dbo].[GeneralKPIFact] INNER JOIN
						 [TransferPricesV01].[dbo].[Organization_CounterPart] ON [TransferPricesV01].[dbo].[GeneralKPIFact].Counterpart = [TransferPricesV01].[dbo].[Organization_CounterPart].Count
						 WHERE     ([TransferPricesV01].[dbo].[GeneralKPIFact].HoursVoucher < 0)
		
		OPEN NoHoursVoucher_cursor
		FETCH NEXT FROM NoHoursVoucher_cursor INTO @CurNoHoursVoucherINN
		WHILE @@FETCH_STATUS = 0
			BEGIN
				SET @CurNoHoursVoucherINN1 = Cast(@CurNoHoursVoucherINN AS nvarchar(255))
				INSERT INTO [TransferPricesV01].[dbo].[NoHoursVoucherFound] 
							SELECT [Company name]as 'CompanyName', Notes as 'Notes', [EU VAT reg# no#] as 'INN_KPP', @ResReportPeriodFromExcel as 'ReportPeriod',GETDATE() as 'timestamp'
									FROM [TransferPricesV01].[dbo].['1st pass$']
									WHERE  [TransferPricesV01].[dbo].['1st pass$'].[EU VAT reg# no#] LIKE @CurNoHoursVoucherINN1
									--GROUP BY [Company name], Notes, [EU VAT reg# no#]
				FETCH NEXT FROM NoHoursVoucher_cursor INTO @CurNoHoursVoucherINN	
			END;
CLOSE NoHoursVoucher_cursor
DEALLOCATE NoHoursVoucher_cursor

GO


Если вместо @CurNoHoursVoucherINN1 написать строку '%770024%' = 20 строк добавлены. Все хорошо.
В @CurNoHoursVoucherINN1 на отладчике:
@CurNoHoursVoucherINN1	770024               	nvarchar

Перепробованны ВСЕ варианты с '%770024%'
Натолкните на мысль, плиз?
16 сен 15, 12:57    [18155541]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
AnMoOr,

по-человечески изъясняться можете?

Надо писать
LIKE N'%'+@CurNoHoursVoucherINN1+N'%'
Или засунуть проценты в @CurNoHoursVoucherINN1 сразу.
16 сен 15, 13:01    [18155575]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
AnMoOr
Member

Откуда: Moscow
Сообщений: 77
автор
LIKE N'%'+@CurNoHoursVoucherINN1+N'%'
- не работает. Тот же эффект.
16 сен 15, 13:08    [18155630]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
AnMoOr
- не работает. Тот же эффект
AnMoOr
Если вместо @CurNoHoursVoucherINN1 написать строку '%770024%' = 20 строк добавлены. Все хорошо.
Противоречие!

Однако, завязывайте с типом NCHAR(25)!
Замените на NVARCHAR(достаточная длина, не факт, что 25)
16 сен 15, 13:14    [18155666]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
ю куд хэв ит ол
Guest
AnMoOr,

770024                   nvarchar
1234567890123456789012345 
16 сен 15, 13:18    [18155694]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
ю куд хэв ит ол
Guest
AnMoOr,

забавно вы вообще: сначала старательно тримите и засовываете в 25 символов, но так чтоб в конце пробелы появились - в чар (нах было тримить)
потом кастуете к варчар и уже 255...
зачем вообще две переменные? чтоб перекладывать?
16 сен 15, 13:20    [18155704]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
AnMoOr
Member

Откуда: Moscow
Сообщений: 77
iap
AnMoOr
- не работает. Тот же эффект
AnMoOr
Если вместо @CurNoHoursVoucherINN1 написать строку '%770024%' = 20 строк добавлены. Все хорошо.
Противоречие!

Однако, завязывайте с типом NCHAR(25)!
Замените на NVARCHAR(достаточная длина, не факт, что 25)


Товарищ, Вы читать умеете?
Где противоречье?
Еще раз: если попробовать Ваш вариант - 0 строк обработано.
на отладчике переменная = '%770024%'
Если вписать руками, прямо в запросе
'%770024%'
- 20 строк добавлено.
CHAR/ VARCHAR менял, длину менял - без эффекта.
16 сен 15, 13:24    [18155727]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
AnMoOr
Товарищ, Вы читать умеете?
Даже если и не умею?
С вами надо молчать - понял. Сами разберётесь.
16 сен 15, 13:26    [18155737]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
AnMoOr
Member

Откуда: Moscow
Сообщений: 77
ю куд хэв ит ол
AnMoOr,

забавно вы вообще: сначала старательно тримите и засовываете в 25 символов, но так чтоб в конце пробелы появились - в чар (нах было тримить)
потом кастуете к варчар и уже 255...
зачем вообще две переменные? чтоб перекладывать?

Две переменные, LTRIM'ы - это уже от безисходности :)
.
770024 nvarchar
1234567890123456789012345 - это не понял. Что имели ввиду?
16 сен 15, 13:27    [18155753]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
o-o
Guest
AnMoOr
автор
LIKE N'%'+@CurNoHoursVoucherINN1+N'%'
- не работает. Тот же эффект.

и в отладчике снова без процентов, да?
покажите картинкой.
куда проценты вписали и как в отладчике их упорно нет.
16 сен 15, 13:48    [18155885]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
AnMoOr
Member

Откуда: Moscow
Сообщений: 77
o-o
AnMoOr
пропущено...
- не работает. Тот же эффект.

и в отладчике снова без процентов, да?
покажите картинкой.
куда проценты вписали и как в отладчике их упорно нет.


Пожалуйста...

К сообщению приложен файл. Размер - 66Kb
16 сен 15, 14:03    [18156079]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
Jaffar
Member

Откуда:
Сообщений: 633
AnMoOr
Запрос:
 DECLARE @CurNoHoursVoucherINN  nchar(25),@CurNoHoursVoucherINN1  nvarchar(255), @CHARReportPeriodFromExcel nvarchar, @DATEReportPeriodFromExcel float, @ResReportPeriodFromExcel datetime

SET @DATEReportPeriodFromExcel = (SELECT TOP 1 POAgrDate FROM [TransferPricesV01].[dbo].['1st pass$'] ORDER BY POAgrDate DESC)
SET @ResReportPeriodFromExcel = (SELECT CAST(CAST(@DATEReportPeriodFromExcel AS nvarchar) as datetime))

DECLARE NoHoursVoucher_cursor CURSOR FOR 
		SELECT LTRIM(RTRIM([TransferPricesV01].[dbo].[Organization_CounterPart].CounterpartINN)) 
						 FROM         [TransferPricesV01].[dbo].[GeneralKPIFact] INNER JOIN
						 [TransferPricesV01].[dbo].[Organization_CounterPart] ON [TransferPricesV01].[dbo].[GeneralKPIFact].Counterpart = [TransferPricesV01].[dbo].[Organization_CounterPart].Count
						 WHERE     ([TransferPricesV01].[dbo].[GeneralKPIFact].HoursVoucher < 0)
		
		OPEN NoHoursVoucher_cursor
		FETCH NEXT FROM NoHoursVoucher_cursor INTO @CurNoHoursVoucherINN
		WHILE @@FETCH_STATUS = 0
			BEGIN
				SET @CurNoHoursVoucherINN1 = Cast(@CurNoHoursVoucherINN AS nvarchar(255))
				INSERT INTO [TransferPricesV01].[dbo].[NoHoursVoucherFound] 
							SELECT [Company name]as 'CompanyName', Notes as 'Notes', [EU VAT reg# no#] as 'INN_KPP', @ResReportPeriodFromExcel as 'ReportPeriod',GETDATE() as 'timestamp'
									FROM [TransferPricesV01].[dbo].['1st pass$']
									WHERE  [TransferPricesV01].[dbo].['1st pass$'].[EU VAT reg# no#] LIKE @CurNoHoursVoucherINN1
									--GROUP BY [Company name], Notes, [EU VAT reg# no#]
				FETCH NEXT FROM NoHoursVoucher_cursor INTO @CurNoHoursVoucherINN	
			END;
CLOSE NoHoursVoucher_cursor
DEALLOCATE NoHoursVoucher_cursor

GO


Если вместо @CurNoHoursVoucherINN1 написать строку '%770024%' = 20 строк добавлены. Все хорошо.
В @CurNoHoursVoucherINN1 на отладчике:
@CurNoHoursVoucherINN1	770024               	nvarchar

Перепробованны ВСЕ варианты с '%770024%'
Натолкните на мысль, плиз?


Е....ый стыд.
Кто так форматирует?!! Это же просто ..... какое-то.
Кто вообще так пишет - это просто ....... нет слов, даже матерных.

Ну а по сути попробуйте вот так

DECLARE @CurNoHoursVoucherINN  nchar(25),@CurNoHoursVoucherINN1  nvarchar(255), @CHARReportPeriodFromExcel nvarchar, @DATEReportPeriodFromExcel float, @ResReportPeriodFromExcel datetime

SET @DATEReportPeriodFromExcel = (SELECT TOP 1 POAgrDate FROM [TransferPricesV01].[dbo].['1st pass$'] ORDER BY POAgrDate DESC)
SET @ResReportPeriodFromExcel = (SELECT CAST(CAST(@DATEReportPeriodFromExcel AS nvarchar) as datetime))

INSERT [TransferPricesV01].[dbo].[NoHoursVoucherFound]
SELECT [Company name], Notes, [EU VAT reg# no#], @ResReportPeriodFromExcel, GETDATE()
FROM [TransferPricesV01].[dbo].[GeneralKPIFact] gk
JOIN [TransferPricesV01].[dbo].[Organization_CounterPart] oc ON oc.Count = gk.CounterPart 
join [TransferPricesV01].[dbo].['1st pass$'] ps on ps.[EU VAT reg# no#] like '%'+ltrim(rtrim(oc.CounterPartINN))+'%'  --- вот тут нужно было добавить %%
WHERE
     gk.HoursVoucher < 0
16 сен 15, 14:13    [18156155]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
AnMoOr
Member

Откуда: Moscow
Сообщений: 77
Ну а по сути попробуйте вот так

DECLARE @CurNoHoursVoucherINN  nchar(25),@CurNoHoursVoucherINN1  nvarchar(255), @CHARReportPeriodFromExcel nvarchar, @DATEReportPeriodFromExcel float, @ResReportPeriodFromExcel datetime

SET @DATEReportPeriodFromExcel = (SELECT TOP 1 POAgrDate FROM [TransferPricesV01].[dbo].['1st pass$'] ORDER BY POAgrDate DESC)
SET @ResReportPeriodFromExcel = (SELECT CAST(CAST(@DATEReportPeriodFromExcel AS nvarchar) as datetime))

INSERT [TransferPricesV01].[dbo].[NoHoursVoucherFound]
SELECT [Company name], Notes, [EU VAT reg# no#], @ResReportPeriodFromExcel, GETDATE()
FROM [TransferPricesV01].[dbo].[GeneralKPIFact] gk
JOIN [TransferPricesV01].[dbo].[Organization_CounterPart] oc ON oc.Count = gk.CounterPart 
join [TransferPricesV01].[dbo].['1st pass$'] ps on ps.[EU VAT reg# no#] like '%'+ltrim(rtrim(oc.CounterPartINN))+'%'  --- вот тут нужно было добавить %%
WHERE
     gk.HoursVoucher < 0
[/quot]

Попробовал, здорово, работает. Спасибо!
Только результирующих строк почти в 2 раза с гаком меньше, чем должно быть...
.
Кроме % не каких других вариантов замены символов нет?
16 сен 15, 14:30    [18156284]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
ю куд хэв ит ол
Guest
AnMoOr
ю куд хэв ит ол
AnMoOr,

забавно вы вообще: сначала старательно тримите и засовываете в 25 символов, но так чтоб в конце пробелы появились - в чар (нах было тримить)
потом кастуете к варчар и уже 255...
зачем вообще две переменные? чтоб перекладывать?

Две переменные, LTRIM'ы - это уже от безисходности :)
.
770024 nvarchar
1234567890123456789012345 - это не понял. Что имели ввиду?

это я попробовал вместе с вами загибая пальцы посчитать до двадцати пяти
в своем дебаге вокруг выводимой строки кавычки доплонительно поставьте и еще раз посмотрите
в сломанном квотировании на мое сообщение, как и на ваше исходное, смотреть смысла нет. смысл появляется только при моноширинном шрифте.
16 сен 15, 14:50    [18156431]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
o-o
Guest
а что на картинке какие-то утроенные кавычки?
SET @CurNoHoursVoucherINN1 = N'''%'...
у вас вместо %770024% ищется закавыченное '%770024%'
отладчик, кстати, это тоже подтверждает.
убирайте тройные, оставьте одинарные
16 сен 15, 15:03    [18156534]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
AnMoOr
Member

Откуда: Moscow
Сообщений: 77
[quot ю куд хэв ит ол]
AnMoOr
пропущено...

в своем дебаге вокруг выводимой строки кавычки доплонительно поставьте и еще раз посмотрите.


N'''%'+@CurNoHoursVoucherINN1+N'%''' - Это имеется ввиду? Делал уже...
16 сен 15, 15:03    [18156536]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
o-o
Guest
[quot AnMoOr]
ю куд хэв ит ол
пропущено...
N'''%'+@CurNoHoursVoucherINN1+N'%''' - Это имеется ввиду? Делал уже...

да посчитайте кавычки наконец!!!
вы делали не то, что вас просили, а со своими тройными кавычками
16 сен 15, 15:05    [18156553]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
моя попытка номер пять
Guest
ю куд хэв ит ол
AnMoOr,

"770024                   " nvarchar
 1234567890123456789012345 

давай, чувак, я в тебя верю.
16 сен 15, 15:05    [18156555]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
моя попытка номер пять
Guest
если что, я занимаюсь оформлением цитаты которая в конце исходного сообщения

18155541
16 сен 15, 15:06    [18156561]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
AnMoOr
Member

Откуда: Moscow
Сообщений: 77
Вот Так?

К сообщению приложен файл. Размер - 64Kb
16 сен 15, 15:54    [18156883]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
o-o
Guest
да.
или что, и сейчас тоже не работает?
(хотя тримов маловато. лучше их по 3 раза написать для надежности)
16 сен 15, 16:03    [18156937]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
AnMoOr
Member

Откуда: Moscow
Сообщений: 77
o-o
да.
или что, и сейчас тоже не работает?
(хотя тримов маловато. лучше их по 3 раза написать для надежности)


... Ты не поверишь...
Нотариально заверенный дать?
16 сен 15, 16:08    [18156979]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
o-o
Guest
AnMoOr
Нотариально заверенный дать?

не-не, можно без нотариуса, но 2 окна рядышком в студии сможешь выстроить?
в одном отработавший скрипт с %770024%, подставленным строкой в код.
в соседнем окне неработающий скрипт с формируемой строкой с кавычками и процентами.
и чтоб все видно было хорошо.
а по-максимуму, это потом второй картинкой вкладку с результатами и числом обработанных строк,
тоже в обоих окнах
16 сен 15, 16:14    [18157023]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
Jaffar
Member

Откуда:
Сообщений: 633
AnMoOr,

Попробовал, здорово, работает. Спасибо!
Только результирующих строк почти в 2 раза с гаком меньше, чем должно быть...
.
Кроме % не каких других вариантов замены символов нет?


ну так вы сэр посмотрите, может я чего упустил там в условиях может где-то LEFT JOIN и т.п.
17 сен 15, 06:05    [18158844]     Ответить | Цитировать Сообщить модератору
 Re: WHERE a.[INN] LIKE LIKE @CurINN1 не работает, если @CurINN1 получена из курсора.  [new]
AnMoOr
Member

Откуда: Moscow
Сообщений: 77
o-o
AnMoOr
Нотариально заверенный дать?

не-не, можно без нотариуса, но 2 окна рядышком в студии сможешь выстроить?
в одном отработавший скрипт с %770024%, подставленным строкой в код.
в соседнем окне неработающий скрипт с формируемой строкой с кавычками и процентами.
и чтоб все видно было хорошо.
а по-максимуму, это потом второй картинкой вкладку с результатами и числом обработанных строк,
тоже в обоих окнах


Не дам. Все завелось.
Я случайно убил файл, но текст осталось в буфере.
Я создал новый, вставил текст из буфера - все работает.
Еще перегрузили сервак...
Не уверен, что это помогло, однако - теперь нотариальные не могу дать...

автор
ну так вы сэр посмотрите, может я чего упустил там в условиях может где-то LEFT JOIN и т.п


Нет, Вы ничего не упустили, я первый запрос так же сделал и результаты у меня такие же получились, только он задачу не решает... :)
18 сен 15, 18:29    [18167505]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить