gpt4 book ai didi

mysql - 根据行检测列的类型

转载 作者:行者123 更新时间:2023-11-29 14:21:52 25 4
gpt4 key购买 nike

在我的 Lua 应用程序中,我试图创建一个设置特定用户数据的实用函数。它使用以下格式:setUserData(int UID, string COLUMN_NAME, mix ROWVALUE)它将数据保存在 MySQL 数据库中。

我不确定如何创建列(如果它不存在)并检测值的类型(TEXT、tinyint、VARCHAR 等)以设置列。

始终将列设置为 TEXT 类型会更容易更好吗?如果没有,我该如何检测和创建?

最佳答案

这很大程度上取决于您的契约(Contract) setUserData功能。如果您希望用户始终为给定的列名提供相同的值类型,则您可能总是从中派生列类型的某些方面,特别是它是否由字符、整数或 float 组成。然后,您可以选择为给定数据选择最大大小的列类型,即 LONGTEXT , DOUBLEBIGINT 。这样做可能需要数据库中比严格需要的内存更多的内存,但是如果您确实对传递给该函数的数据一无所知,则不能排除以下可能性:所有这些空间可能都需要用于数据库中的其他值。同一列。

另一种方法是始终从给定系列中选择最小数据类型。将新数据插入现有列时,您必须留意截断警告,当您看到它们时,您可以相应地放大列类型。

对于许多应用程序来说,将所有内容存储为字符将是最简单的解决方案。但是一个LONGTEXTTINYINT 这样的简单列类型复杂得多,因此您必须在内存要求和性能方面付出代价。一个VARCHAR没那么糟糕,所以如果您执行上一段中建议的自动放大,惩罚就会减轻一些。

当您将所有内容存储为文本(独立于 LUA 中的 native 类型)时,行为也可能略有不同:当您输入 '01234' 这样的数字时,它将与 '1234' 比较不等于。这是否可取取决于您的应用程序,并且可能很好地表明将数据存储为文本是否是一个好主意。只要 LUA 端始终使用相同的数据类型,就不应该有任何差异,因为相同的数据类型每次都会以相同的方式转换为文本。

关于mysql - 根据行检测列的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11629354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com