Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 18.09.2022
Сообщений: 242

Приведение bigint к nvarchar

05.07.2024, 16:44. Показов 549. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

T-SQL
1
2
Select hashbytes('MD5', CONVERT(nvarchar,COALESCE ([data],'NULL ')
From dbo.tabel with (tablock)
Даёт ошибку 8114 ошибка при преобразования типа данных
Varchar к bigint. Как можно исправить ошибку ? Заранее спасибо!
[data] формата bigint.

Также возникает ошибка, когда [data] имеет формат data.
Сообщение 241. Ошибка при преобразовании даты или времени из символикой
Строки. Help!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.07.2024, 16:44
Ответы с готовыми решениями:

"Ошибка при преобразовании типа данных nvarchar к bigint"
таблица create table поставщик (код_поставщика int not null primary key identity(1,1), телефон varchar(50) not null, адрес...

Достать bigint из БД
Пытаюсь достать значение типа bigint из БД PostgreSQL с помощью Visual C++: CDatabase cdbMyDB; ...

bigint в MS Access
Меня интересует, есть ли какието драйвера для вывода bigint из SQL базы в MS Access ? Ато уже парюсь над этим очень долго, и не могу...

9
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
05.07.2024, 17:10
а если скобки закрывающие поставить там где им место?
0
2 / 2 / 0
Регистрация: 18.09.2022
Сообщений: 242
05.07.2024, 17:14  [ТС]
Не, это я здесь их пропустил. В самом запросе все стоит как надо!

Добавлено через 53 секунды
Просто с телефона пишу, неудобно очень
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
05.07.2024, 17:24
что не так?
SQL
1
2
DECLARE @DATA BIGINT = 10000000000;
SELECT hashbytes('MD5', CONVERT(nvarchar,COALESCE (@DATA,'NULL ')))
(No column name)
0xE468E6C23A1E27BCB2614405ED532243

SQL
1
2
DECLARE @DATA DATE = '20240704'
SELECT hashbytes('MD5', CONVERT(nvarchar,COALESCE (@DATA,'NULL ')))
(No column name)
0xEB1D7E11B3C97B0A7FE7BA8C21A629A0
1
2 / 2 / 0
Регистрация: 18.09.2022
Сообщений: 242
05.07.2024, 20:43  [ТС]
В таком виде работает.
Щяз приеду домой и с компа напишу

Добавлено через 2 часа 13 минут
В чем суть. Задача довольно простая. Есть таблица (неиндексированная), надо найти дубли.
Алгоритм такой: все поля (в т.ч. формата date и bigint) преобразуем в строки, складываем эти строки, получаем большую строку, вычисляем хэш от нее и потом делаем группировку по хэшу, выявляя где having count(*)>1.
То есть что-то в таком виде:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DECLARE @ddd nvarchar(6)='[3]%'
 
SELECT
HASHBYTES('MD5', CONVERT(nvarchar,COALESCE ([f1],'NULL ')+'|'+
CONVERT(nvarchar,COALESCE ([f2],'NULL ')+'|'+
CONVERT(nvarchar,COALESCE ([f3],'NULL ')+'|'+
...
CONVERT(nvarchar,COALESCE ([f30],'NULL ')))
 
FROM dbo.tabel WITH (TABLOCK)
WHERE [f4] LIKE @ddd
GROUP BY
HASHBYTES('MD5', CONVERT(nvarchar,COALESCE ([f1],'NULL ')+'|'+
CONVERT(nvarchar,COALESCE ([f2],'NULL ')+'|'+
CONVERT(nvarchar,COALESCE ([f3],'NULL ')+'|'+
...
CONVERT(nvarchar,COALESCE ([f30],'NULL ')))
HAVING COUNT(*)>1
И вот получается, что когда я напишу в составе одно поле (как вы написали выше) все работает. Как только я указываю все поля (ну или много полей) запрос начинает работать, показывает начальные результаты, а потом возникаеи ошибка:

1. По данным типа bigint: 8114...Ошибка при преобразованиитипа данных varchar к bigint.

2. по данным типа date: Сообщение 241...Ошибка преобразования даты или времени из символьной строки

И непонятно что именно исправлять

Добавлено через 4 минуты
Мистика
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
06.07.2024, 09:23
в том что показано нет преобразования из строки в число и дату.
tabel случайно не вьюха? может в ней преобразование

чем group by f1,f2,...,f30 не устроил и тот же having?
1
1305 / 359 / 98
Регистрация: 14.10.2022
Сообщений: 1,099
06.07.2024, 11:27
Цитата Сообщение от 2022N2022 Посмотреть сообщение
В чем суть. Задача довольно простая. Есть таблица (неиндексированная), надо найти дубли.
Алгоритм такой: все поля (в т.ч. формата date и bigint) преобразуем в строки, складываем эти строки, получаем большую строку, вычисляем хэш от нее и потом делаем группировку по хэшу, выявляя где having count(*)>1.
Это долго и дорого.
См:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Use tempdb
Go
 
Drop table if exists #t
Create table #t (txt nvarchar(max), n int, t date, tt money)
 
Insert into #t values 
 (N'aaaAb', 1, '20240101', 0.0), (N'bBbBA', 1, '20240101', 0.0), (N'CcccC', 1, '20240101', 0.1)
,(N'aaaAb', 1, '20240101', 0.0), (N'aaaAb', 1, '20240101', 0.1), (N'CcccC', 1, '20240101', 0.1), (N'CcccC', 1, '20240102', 0.1)
 
Select * from (
Select *,Count(*) over (partition by BINARY_CHECKSUM(a.txt, a.n, a.t, a.tt)
,BINARY_CHECKSUM(a.txt, a.t)
,BINARY_CHECKSUM(a.n, a.tt)) cnt
from #t a
) b
Where b.cnt >1
Добавлено через 12 минут
Цитата Сообщение от 2022N2022 Посмотреть сообщение
В чем суть. Задача довольно простая. Есть таблица (неиндексированная), надо найти дубли.
Алгоритм такой: все поля (в т.ч. формата date и bigint) преобразуем в строки, складываем эти строки, получаем большую строку, вычисляем хэш от нее и потом делаем группировку по хэшу, выявляя где having count(*)>1.
То есть что-то в таком виде:
Но, в общем, если хотите извращений, можно и так.
Медленнее только...

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Use tempdb
Go
 
Drop table if exists #t
Create table #t (txt nvarchar(max), n int, t date, tt money)
 
Insert into #t values 
 (N'aaaAb', 1, '20240101', 0.0), (N'bBbBA', 1, '20240101', 0.0), (N'CcccC', 1, '20240101', 0.1)
,(N'aaaAb', 1, '20240101', 0.0), (N'aaaAb', 1, '20240101', 0.1), (N'CcccC', 1, '20240101', 0.1), (N'CcccC', 1, '20240102', 0.1)
 
Select * from (
Select *, count(*) over (partition by HASHBYTES('md5', (select a.txt, a.n, a.t, a.tt for xml path('')))) cnt
from #t a
) b
Where b.cnt >1
1
2 / 2 / 0
Регистрация: 18.09.2022
Сообщений: 242
06.07.2024, 11:46  [ТС]
А ведь действительно, у меня table это вьюха.
И там данные берутся из разных таблиц с разным форматом. Вот, наверное, в чем причина.
Видимо надо создать из вьюхи таблицу и уже по ней скрипт запускать
0
 Аватар для Дядя Виля
44 / 36 / 9
Регистрация: 12.06.2024
Сообщений: 175
06.07.2024, 13:18
попробовать проверить соответствующие поля функциями:
ISDATE()
ISNUMERIC()
1
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
06.07.2024, 14:48
Цитата Сообщение от 2022N2022 Посмотреть сообщение
Вот, наверное, в чем причина.
Видимо надо создать из вьюхи таблицу и уже по ней скрипт запускать
Несомненно.
Для надежности нужно данные положить в облако и дубли искать через NoSQL...

T-SQL
1
2
3
4
5
6
7
DECLARE @DATA BIGINT = NULL
SELECT hashbytes('MD5', CONVERT(nvarchar,COALESCE(@DATA,'NULL ')))
GO
 
DECLARE @DATA BIGINT = NULL
SELECT hashbytes('MD5', COALESCE(CONVERT(nvarchar, @DATA), 'NULL '))
GO
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.07.2024, 14:48
Помогаю со студенческими работами здесь

bigint в MS Access
Меня интересует, есть ли какието драйвера для вывода bigint из SQL базы в MS Access ? Ато уже парюсь над етим очень долго, и не могу...

BigInt to int
как перевести BigInt в int ? например int e=0; BigInteger bigE = new BigInteger(String.valueOf(e)); int res; и теперь нужно bigE...

BigInt to int
как перевести BigInt в int ? например int e=0; BigInteger bigE = new BigInteger(String.valueOf(e)); int res; и теперь нужно bigE...

Метаморфозы с BIGINT
Господа, может-ли кто-нибудь подсказать, почему при попытке записать число в поле типа BIGINT средствами php возникает следующая...

Вставка и поиск bigint
Всем хай. В базе нужно хранить 20ти значные числа, но как мне работать с ними в php, если php приводит их к float и значаться только 14...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru