Javascript 找出两个表之间可联接的数据类型

Javascript 找出两个表之间可联接的数据类型,javascript,sql,type-conversion,hana,Javascript,Sql,Type Conversion,Hana,我有两种看法。V1和V2。我有列名和它们各自的数据类型。 有没有办法找出哪些列(数据类型)可以作为V1和V2之间的连接条件 例如: V1-> ID:整数 姓名:varchar DOB:日期 V2-> ID:BIGINT 薪金:实薪 性别:布尔型 因此,如果我想执行连接,我需要返回给用户: V1->ID(整数)可与V2->ID、薪资联接。(由于无法使用布尔数据类型执行联接,因此不存在Sex) 类似地,V1->Name(varchar)可以与(ID,Salary)连接 最后我需要一个JSON: {I

我有两种看法。V1和V2。我有列名和它们各自的数据类型。 有没有办法找出哪些列(数据类型)可以作为V1和V2之间的连接条件

例如:

V1->

ID:整数

姓名:varchar

DOB:日期

V2->

ID:BIGINT

薪金:实薪

性别:布尔型

因此,如果我想执行连接,我需要返回给用户:

V1->ID(整数)可与V2->ID、薪资联接。(由于无法使用布尔数据类型执行联接,因此不存在Sex)

类似地,V1->Name(varchar)可以与(ID,Salary)连接

最后我需要一个JSON: {ID:ID,Salary} {Name:ID,Salary}

是否有某种方法可以确定两个数据类型是否可以连接

谢谢

好的,实际上您没有定义两个表如何结合的数据模型。这听起来像是一种“用户端报告工具”,在这种工具中,用户应该能够以表的形式任意连接数据

这一切都很好,但这意味着对于如何提出潜在的加入标准没有硬性规定。在这种情况下,你需要经验法则,也就是“启发式”

这种启发式已经在许多工具中实现,通常不遵循任何“标准”,但大多数(至少,我所看到的)都试图遵循常识。 其中一条规则肯定是:

“当我看到一只像鸭子一样走路、像鸭子一样游泳的鸟 像鸭子一样呱呱叫,我管那只鸟叫鸭子“

我的意思是:您尝试匹配一起使用的数据类型,至少在域级别上是这样。因此,时间-日期列可以与其他时间-日期列一起使用,货币列可以与其他货币列一起使用,地址列集可以与其他地址列集一起使用

这种匹配无助于找到有意义的联系,但有助于剔除那些完全没有意义的联系。 不幸的是,这种方法比仅仅查看用于存储数据的技术数据类型要复杂得多。例如,日期可以轻松地存储在任何类型的数据中。存储在文本列中的日期非常常见,因此您需要尝试并确定何时会出现这种情况

提示可以是列名(“其中的日期”、“dt”、“day”等)或实际内容(格式匹配“YYYY-MM-DD”或“DDMMYY”或“…”)

其他列类型也可能存在类似的提示,成功预测正确的数据域是数据探索工具的主要任务之一。由于数据通常比较混乱,这不是一项简单的任务


回到您最初的问题:没有HANA特性可以为您做到这一点,并且仅仅查看技术数据类型之间几乎没有区别(可能太简单/太愚蠢,无法涵盖幼稚的测试用例之外的任何内容)以及一组广泛的启发式方法,用于猜测列条目的正确语义域。

您是否可以/应该在联接中使用属性不太依赖于相应的数据类型,而更多地依赖于属性实际包含的数据。当然,我可以加入ID和Age(两者都可能是int),但这样做没有意义。我知道这没有意义。以上只是一个例子。因为我觉得无法根据属性(列)的名称来确定确切的连接,所以我希望用户通过数据类型进行相应的选择。我不明白这怎么会是一个问题。您知道视图中有哪些数据,对吗?那你为什么要猜怎么加入呢?这更像是一个“合并”选项。假设我需要合并两个表,给用户选项哪些列可以作为连接条件。在那里,我应该避免无法连接的列。谢谢@Lars的建议。解决方案我所追求的(一些类似于您所建议的,因为它完全是常识性的)将数据类型分为三个主要类别:1。整数类型2。数据/时间3。Varbinary/BLOB参数。为用户提供了选择的选项。如果在某种情况下,用户选择了错误的选项,那么立即从后端抛出错误。(错误-兄弟,这不起作用!)再次感谢Lars.)