2013-12-12 9 views
0

Я нахожусь постоянно получаю эту ошибку после того, как добавил внутреннее соединениеКонверсия удалось при преобразовании значения VARCHAR ошибки

SELECT 
    character.dbo.user_character.character_name, 
    character.dbo.user_character.wLevel, 
    character.dbo.user_character.byPCClass, 
    character.dbo.user_character.wMapIndex, 
    character.dbo.user_character.wPosX, 
    character.dbo.user_character.wPosY, 
    ban_info.dbo.account_login.ip 
FROM 
    character.dbo.user_character 
INNER JOIN ban_info.dbo.account_login ON (character.dbo.user_character.wPosY=ban_info.dbo.account_login.ip) 
WHERE (character.dbo.user_character.user_no='12100601280065') 

Ошибка

Msg 245, Level 16, State 1, Line 1 Конверсия удалось при преобразовании Значение varchar '127.0.0.1' для типа данных int.

Как я могу исправить IT>?

ответ

0

Взгляните на это; http://daipratt.co.uk/mysql-store-ip-address/. , Для хранения IP-адреса требуется некоторая настройка.

+0

Я использую MSSQL, не MySQL – user2875727

+0

Простой поиск будет вам очень далеко .... [нажмите здесь] (http://stackoverflow.com/questions/6690101/storing-ip- address-in-microsoft-sql-server) – MichaelP

0

Ваша проблема просто сравнивая адрес IP (который не является целым числом), который хранится на ban_info.dbo.account_login.ip целочисленной значение, хранящуюся на character.dbo.user_character.wPosY в следующей строке:

INNER JOIN ban_info.dbo.account_login ON (character.dbo.user_character.wPosY = ban_info.dbo.account_login.ip) 
+0

Хорошо, я изменил его, и, похоже, он исправил проблему, я изменил wPosY на varchar, и теперь это работает, никаких ошибок, но теперь это пустая строка – user2875727

+0

@ user2875727 Потому что вы сравнивают два несоответствующих значения , например 52, не равно 192.168.0.12. –

+0

ах, получилось, поэтому я попытался сравнить между двумя строками, такими как ban_info.dbo.account_login.ip = ban_info.dbo.account_login.ip, и теперь для всех строк он показывает мне первый ip, который в столбцах – user2875727

0

Я думаю, вы должны преобразовать IP-адрес для INT в PHP (или db), а затем сравните его. Существует функция ip2long() в PHP

Смежные вопросы