【问题标题】:Conversion failed when converting the varchar value error转换varchar值错误时转换失败
【发布时间】:2013-12-30 13:40:09
【问题描述】:

添加内部连接后我不断收到此错误

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')

错误

消息 245,第 16 级,状态 1,第 1 行 将 varchar 值“127.0.0.1”转换为数据类型 int 时转换失败。

我该如何修复它>?

【问题讨论】:

    标签: php sql sql-server database


    【解决方案1】:

    看看这个; http://daipratt.co.uk/mysql-store-ip-address/。 .它需要一些调整来存储 IP 地址。

    【讨论】:

    • 我用的是mssql,不是mysql
    • 简单的搜索会让你走得很远......click here
    【解决方案2】:

    您的问题只是将ban_info.dbo.account_login.ip 上存储的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)
    

    【讨论】:

    • 好的,我更改了它,似乎解决了问题,我将 wPosY 更改为 varchar,它现在可以工作,没有错误,但它现在给了我空白行
    • @user2875727 因为您正在比较两个不匹配的值,例如 52 不等于 192.168.0.12 。
    • 啊,明白了,所以我尝试在两条相同的行之间进行比较,例如 ban_info.dbo.account_login.ip=ban_info.dbo.account_login.ip 现在对于所有行它显示我的第一行ip 在列中
    【解决方案3】:

    我认为您应该在 php(或 db)中将 IP 地址转换为 int,然后进行比较。 PHP中有函数ip2long()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2011-05-01
      • 1970-01-01
      相关资源
      最近更新 更多