Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 长整数可以存储字母吗?_Sql_Ms Access 2007_Database Performance - Fatal编程技术网

Sql 长整数可以存储字母吗?

Sql 长整数可以存储字母吗?,sql,ms-access-2007,database-performance,Sql,Ms Access 2007,Database Performance,我在Access中运行了“分析性能”功能,它有一个提高性能的“想法”;Access说我应该将字母数字混合的项目从文本数据类型转换为长整数(idea中的特定名称)。对于长整数是否可以存储字母来说,访问是否正确(这将提高性能)是次要的 [§关于数据-提供给我的数据中的连字符始终存在于该位置;字母始终为A-F] 据我所知,这表明Long只存储数字 Long-允许-2147483648和2147483647之间的整数 我是否正在合并数据类型?(此外,当我调出设计视图时,它只提供number作为数据类型

我在Access中运行了“分析性能”功能,它有一个提高性能的“想法”;Access说我应该将字母数字混合的项目从
文本
数据类型转换为
长整数
(idea中的特定名称)。对于长整数是否可以存储字母来说,访问是否正确(这将提高性能)是次要的

[§关于数据-提供给我的数据中的连字符始终存在于该位置;字母始终为A-F]

据我所知,这表明
Long
只存储数字

Long
-允许-2147483648和2147483647之间的整数

  • 我是否正在合并数据类型?(此外,当我调出设计视图时,它只提供
    number
    作为数据类型;没有
    long
    long integer
  • Long Integer
    可以存储字母吗
  • 如果我的列已经填充,并且我转换了数据类型,我会丢失数据吗

我从未遇到过这种情况,但它似乎认为您的字符串是十六进制数


如果除了A-F之外,你从来没有其他字母,那么你可以将它们存储为long,然后使用Hex()函数进行转换,但这似乎是非常困难的,我会避免这种情况,除非你真的非常想寻找一些性能。

如果它实际上是十六进制数据,它总是有相同的格式,因此破折号可以添加在相同的位置,然后可以存储数字数据,并在需要时将其转换为十六进制表示法

十个十六进制数字代表40位数据,因此w3schools页面中描述的
Long
类型不适用,因为它只有32位。您需要一个64位的数据类型,如
double
bigint
。(后者可能在Access中不可用。)

然而,只有当您实际以数字形式处理数据时,这才是真正的收益。否则,每个记录只能保存几个字节,并且需要额外的处理才能转换为数字格式


如果表已填充,则必须读取值,转换它们,然后以数字形式存储。

可以通过将这些值拆分为两个长整型列来存储这些值。然后,当您需要原始文本形式时,在它们的
Hex()
值之间加一个破折号

? Hex(76721) & "-" & Hex(915264)
12BB1-DF740

然而,我不明白为什么这样做是值得的。有时候,性能分析器的建议对我来说毫无意义;这种情况就是这样。

我也这么认为,但是“-”登录example@pkuderov啊,我认为这是两个条目之间的一个分隔符,但如果不是这样的话,那么是的,你是对的。就上下文而言,目前有60条记录,我只会预计最大用例为500条;看来,对它们进行十六进制操作可能比它的价值更具巫毒色彩,因为我目前没有任何性能问题,而且记录仓库每六个月或更长时间都会出现一次so@kekekela如果这些值具有相同的视图“######-######”where#from[0..9,A..F],则仍然可以将其转换为十六进制。所以我仍然喜欢你的想法)你可以将十六进制值(以16为基数)转换成十进制值(以10为基数),并将结果存储在长整数中(如果十六进制值没有超出长整数)。但是,您的十六进制值(
12BB1-DF740
)实际上不是十六进制值,因为它有一个破折号。如果不手动插入破折号,则无法将其转换为长整数,然后在破折号位于同一位置时将其转换回十六进制值。为什么它使用5个十六进制数字,一个破折号,然后是5个十六进制数字?似乎维护它的应用程序需要以一种非常特定的方式对其进行格式化——如果转换为长整型,将破坏应用程序。。。