【问题标题】:Is it possible to convert strings like 'John' and 'Jane' to numeric values but keep them readable as 'John' and 'Jane'是否可以将像 'John' 和 'Jane' 这样的字符串转换为数值,但保持它们作为 'John' 和 'Jane' 的可读性
【发布时间】:2018-04-14 07:43:31
【问题描述】:

问题都在标题中。我正在尝试合并两个块,一个是数字,一个是字符串。我知道你不能将它们结合在一起。将我所有的数字转换为文本是可行的,但并不理想,因为我的输出是文本而不是数字。我的问题是:是否可以反其道而行之,将文本字段转换为数值,但让它们像“John”和“Jane”一样可读。

【问题讨论】:

  • 看起来你想要翻译表name | numeric value
  • @lad2025 你的名声很酷。 55,555...
  • 二进制和八进制是数字。您可以实现一个函数来将您的字符串转换为其中任何一个。或者你可以 implement a function like this 让它吐出字符串的 ASCII 字符代码(假设这里没有 unicode)。
  • 虽然它们在被转换回来之前不会是“可读的”。除非您将它们转换为仅 1337 的数字,否则无法解决此问题。我还认为您需要在 UNION 输出中添加一个指示器来告诉您它是转换为数字的文本还是只是一个无聊的旧数字,以便在您完成后将其翻译回来。

标签: sql oracle


【解决方案1】:

使用基数 62 而不是十进制。使用 base 62,您可以将所有字母(小写和大写)用作数字。

0 - 0
...
9 - 9
a - 10
...
z - 35
A - 36
...
Z - 62

简单易懂。

【讨论】:

  • 在这个例子中,我必须将 base 62 转换回文本才能写出完整的单词,对吗?
【解决方案2】:

听起来你真的搞错了。您对您的应用程序说得不够多,但您正在尝试将文本和数字列结合在一起。我在想象这样的事情:

SELECT t1.my_numeric_column
  FROM mytable1 t1
UNION ALL
SELECT t2.my_varchar2_column
  FROM mytable2 t2

正如你所说,这是行不通的。你应该做的是:

SELECT TO_CHAR( t1.my_numeric_column )
  FROM mytable1 t1
UNION ALL
SELECT t2.my_varchar2_column
  FROM mytable2 t2

您说这是“不理想,因为我的输出是文本而不是数字”,但是如果您在某处显示此文本(并且您没有说明在哪里或如何),那么您的输出 是 文本,而不是数字。

您要解决的问题或您要解决的问题在这里没有明确定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 2012-03-02
    • 2020-03-19
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 2019-09-10
    相关资源
    最近更新 更多