我在Sql Server 2005中进行查询,我需要将DateTime变量中的值转换为格式的varchar变量yyyy-mm-dd(没有时间部分).我怎么做?
我们使用UUID作为oracle DB的主键,并尝试确定VARCHAR的适当最大字符长度.显然这是36个字符,但我们注意到UUID'生成的长度比这长 - 最多60个字符.有没有人知道UUID的合适最大字符长度?
我有一个contacts包含字段,如表postcode,first name,last name,town,country,phone number等等,所有这些都被定义为VARCHAR(255)即使没有这些领域都不会接近有255个字符.(如果你想知道,就是这样,因为Ruby on Rails迁移VARCHAR(255)默认情况下将字符串字段映射到我并且我从不打扰覆盖它).
由于VARCHAR只会领域的实际字符的数目存储(连同字段长度),是否有任何明显的优势(性能或其他方式)使用,比方说,VARCHAR(16)在VARCHAR(255)?
此外,大多数这些字段都有索引.字段上的较大VARCHAR大小是否会影响索引的大小或性能?
仅供我使用MySQL 5.
关于SQL Server,我理解:
var 表示内存是惰性分配的,这意味着它完全适合数据(插入时).
MAX 意味着没有尺寸限制\限制.
那么,使用MAX时总是优先使用varchar,因为我们无论如何都不分配整个尺寸?
只有在我们想要在此DB列上强制执行约束时,我们才应该使用常量吗?
我试图找到时区标识符的最大长度.这是用作时区名称的字符串(例如"America/New_York").tz数据库没有帮助; 我找不到实施细节.
Microsoft(.NET Framework 4.5)建议最大长度为32,但这似乎是其注册表的限制.
libc指向一个名为"_POSIX_TZNAME_MAX"的限制,长度为3个字符,但这是POSIX合规性的绝对最低要求.通常,我猜一个实现将使用更多.
所以真正的问题是:安全存储时区"tzname"/标识符名称的字符串长度是多少?
如果我知道存储在MySQL中的值总是正好是32个字符,那么制作列类型CHAR而不是VARCHAR?使用VARCHAR和CHAR之间的性能差异究竟是什么?
谢谢.
CHAR存储为固定长度字符串,VARCHAR存储为可变长度字符串.我可以使用VARCHAR存储固定长度的字符串,但为什么人们仍然想使用CHAR来存储固定长度的字符串?使用CHAR over VARCHAR有什么好处吗?如果没有任何好处,为什么mySQL数据库不会删除CHAR的选项?
由于此以前发布会议讨论时,可能需要使用CHAR在VARCHAR指出,一个能获得性能优势时存储的值大致相同的长度.当然,我会选择CHAR作为存储2个字符的状态代码数据的数据类型.
我只想确认一个完整性检查,这意味着当一个人执行一个过滤此列的SQL时,必须用足够的空格填充过滤的值,使其等于char字段的定义长度.
例如,假设表"CODE_TABLE",其中列10_CHAR_CODE被定义为CHAR(10):
SELECT*FROM CODE_TABLE WHERE 10_CHAR_CODE ='ABCDE'
并且如果10_CHAR_CODE是另一个表的"逻辑"外键但是不存在特定的关系完整性约束,则存储在10_CHAR_CODE查找表中的值理想情况下应该具有相同的数据类型(Char(10)以避免必须执行低效率加入时RTRIM功能.
(我们有一个婴儿大小的数据仓库,而且DBA认为参照完整性约束效率低下,因此我们最终会在表之间对数据进行不一致的数据类型定义.)
我的印象准确吗?
Char并且varchar是SQL中的数据类型,因为它们在许多其他语言中(所以这个问题可能是多语言).
从我的理解,不同的是,如果我宣布Char因为Char(20)它会分配20(字节/位)有人能澄清这一点呢?现在,我将使用字节.].然后,如果我只使用16个字节,我仍然会有四个分配给该字段.(浪费4个字节的内存.)
但是,如果我声明一个varcharas varchar(20)并且只使用了16个字节,那么它只会分配16个字节.
当然这更好吗?为什么有人会选择char?它是遗留的原因,还是我缺少的东西?
sql ×5
sql-server ×4
mysql ×3
char ×2
varchar ×2
database ×1
datetime ×1
primary-key ×1
schema ×1
sql-convert ×1
t-sql ×1
timezone ×1
uuid ×1