【问题标题】:How to manipulate a char data type in Oracle如何在 Oracle 中操作 char 数据类型
【发布时间】:2022-08-08 19:57:22
【问题描述】:

我有一张包含客户信息的表格。客户 ID、名字、姓氏、地址、州、城市、邮政编码。邮政编码是 char 数据类型。在 oracle devgym 中,它要求我从 CustomerID 介于 100 到 200 之间的所有客户的 PostalCode 中减去 1。我尝试过类似的操作

Update Customer
Set PostalCode = PostalCode - 1
Where CustomerID BETWEEN \'100\' AND \'200\'

但我相信,由于 PostalCode 是 char 数据类型,我需要寻找另一种解决方案。我在网上找不到任何可以明确回答从 char 数据类型中减去 1 的内容,或者我可能问错了问题。

  • Oracle 支持隐式类型转换。你试过任何代码吗?你有什么错误?
  • UPDATE Customer SET PostalCode = PostalCode - 1 WHERE CustomerId BETWEEN 100 AND 200; SELECT * FROM Customer WHERE CustomerId BETWEEN 100 AND 200;
  • 如果您绝对确定PostalCode 是数字(除了数字之前/之后的空格之外没有任何其他符号),这将起作用并返回一个数字(例如\'001234\' 将返回1233)。如果这不是你的情况(例如,你可能还有其他符号)或者你得到你不想要/期望的输出,那么请在问题中提供一些清晰的说明:结果有什么问题,提供样本数据和预期输出。
  • 这与 Oracle Dev Gym 中的哪个测验有关?

标签: sql database oracle syntax char


【解决方案1】:

我也处理过这个问题。

1- 如果 Customer_id 是数字,那么你应该试试这个;

Update Customer
Set PostalCode = to_number(PostalCode) - 1
Where CustomerID BETWEEN 100 AND 200;

2-如果 Customer_id 是 char 试试这个:

Update Customer
Set PostalCode = to_number(PostalCode) - 1
Where to_number(CustomerID) BETWEEN 100 AND 200;

3-但如果表很重,那么我建议使用 truncate 和 insert 而不是 update 的组合,因为 update 命令太慢了。

【讨论】:

    猜你喜欢
    • 2017-05-22
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 2013-09-27
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多