【问题标题】:Update String Columns without Using Single Quotations - General Question不使用单引号更新字符串列 - 一般问题
【发布时间】:2011-02-25 16:27:38
【问题描述】:
UPDATE CustomerPhone 
SET PhoneTypeID = 7, PhoneNumber = 999-444
WHERE CustomerID = 500 AND PhoneNumber = 9-1-1;

PhoneNumber 是 varchar(20) 类型,而 PhoneTypeID 和 CustomerID 是 int 类型。我在 SQL Server 中运行上述语句,它运行良好。

我想知道它是如何工作的?我认为任何字符串值都必须放在'...'之间

【问题讨论】:

  • 尝试在 PhoneNumber 列中输入“asdasd”之类的文本。还能用吗?
  • @peace: 实际插入了什么值....字符串值9-1-17?我希望7
  • 性能不一致。以前可以用,现在一直报错:Conversion failed when convert the varchar value ....
  • @peace:当列中的数据无法静默转换或强制转换为您在 WHERE 子句中 = 右侧传递的数据类型时,您将收到该错误.听起来你有一些数据不能被强制转换成数字。
  • 顺便说一句! 9-1-1,给我 7...你是对的...

标签: sql-server database tsql dml


【解决方案1】:

当您指定的值不是您期望的类型时,SQL Server 将 CASTCONVERT 传递给它的值。

即尝试: SELECT * FROM CustomerPhone WHERE PhoneTypeID = '7'

这里 SQL Server 将获取您的字符串 '7' 并尝试转换为适当的 int、smallint、tinyint 类型(任何适当的类型)。

【讨论】:

  • SELECT * FROM CustomerPhone WHERE PhoneTypeID = '7' 工作正常!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-10
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多