标签: varchar

VARCHAR大小限制了吗?

可能重复:
MySQL表中varchar长度的重要性

使用VARCHAR时(假设这是短字符串的正确数据类型)大小是否重要?如果我将它设置为20个字符,是否会占用更少的空间或快于255个字符?

php mysql varchar database-design

21
推荐指数
3
解决办法
2万
查看次数

SQL Server:将数据类型varchar转换为numeric时出错

我有一张桌子:

Account_Code | Desc
503100       | account xxx
503103       | account xxx
503104       | account xxx
503102A      | account xxx
503110B      | account xxx
Run Code Online (Sandbox Code Playgroud)

哪里Account_Codevarchar.

当我在下面创建查询时:

Select 
  cast(account_code as numeric(20,0)) as account_code,
  descr 
from account 
where isnumeric(account_code) = 1
Run Code Online (Sandbox Code Playgroud)

它通过返回account_code列中具有有效数值的所有记录运行良好.

但是当我尝试添加另一个select时,嵌套到先前的sql:

select account_code,descr 
from 
(
  Select cast(account_code as numeric(20, 0)) as account_code,descr 
  from account 
  where isnumeric(account_code) = 1
) a 
WHERE account_code between 503100 and 503105
Run Code Online (Sandbox Code Playgroud)

查询将返回错误

将数据类型varchar转换为数字时出错.

那里发生了什么?

如果account_code有效,我已经转换为数字,但似乎查询仍在尝试处理无效的记录.

我需要BETWEEN …

sql-server varchar numeric

21
推荐指数
3
解决办法
22万
查看次数

MySQL - 仅从varchar列中选择数值

请考虑下表:

create table mixedvalues (value varchar(50));

insert into mixedvalues values 
('100'),
('ABC100'),
('200'),
('ABC200'),
('300'),
('ABC300'),
('400'),
('ABC400'),
('500'),
('ABC500');
Run Code Online (Sandbox Code Playgroud)

我怎么能写一个SELECT语句将只返回数字样值

100
200
300
400
500
Run Code Online (Sandbox Code Playgroud)

SQLFiddle

mysql sql varchar numeric

21
推荐指数
3
解决办法
6万
查看次数

选择(n)varchar列的大小是多少?

关于TDWTF的一个稍微激烈的讨论中,出现了一个关于DB中varchar列大小的问题.

例如,取一个包含人名(仅名称,无姓)的字段.很容易看出它不会很长.大多数人的名字少于10个字符,少数是20以上的人.如果你要制作你的专栏,比如varchar(50),它肯定会拿到你遇到的所有名字.

但是对于大多数DBMS而言,无论是制作varchar(50)还是varchar(255),它的大小或速度都没有区别.

那么为什么人们试图让他们的列尽可能小?我知道在某些情况下你可能确实想要限制字符串的长度,但大多数情况并非如此.如果有一个名字极长的人的罕见情况,那么更大的利润只会是有益的.


补充:人们希望引用关于"没有大小或速度差异"的陈述.好.他们来了:

对于MSSQL: http://msdn.microsoft.com/en-us/library/ms176089.aspx

存储大小是输入的实际数据长度+ 2个字节.

对于MySQL: http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html

如果列值需要0 - 255个字节,则为L + 1个字节;如果值可能需要超过255个字节,则为L + 2个字节

我找不到Oracle的文档,而且我没有使用过其他DBMS.但我没有理由相信它有任何不同.

size varchar database-design nvarchar

20
推荐指数
2
解决办法
2万
查看次数

在MySQL数据库中以INTEGER存储整数的前导零

我需要MySQL在整数字段中存储数字并保持前导零.我不能使用zerofill选项,因为我的当前字段是Bigint(16),并且数字可以在前导零的数量上变化.IE:0001- 0005,然后可能需要存储008-010.我并不关心数字的唯一性(这些数字不被用作ID或任何东西),但我仍然需要将它们优选地存储为INTS.

使用CHAR/VARCHAR然后在PHP中将值类型转换为整数的问题意味着通过查询对结果进行排序会导致字母数字排序,IE:SORT BY数字ASC会产生

001
002
003
1
100
101
102
2
Run Code Online (Sandbox Code Playgroud)

显然不是按数字顺序,而是按字母数字顺序,这是不需要的.

希望有一些聪明的解决方法:)

php mysql string varchar integer

20
推荐指数
4
解决办法
3万
查看次数

使varchar(50)列唯一

我在SQL Server数据库中有一个列(代表一封电子邮件)varchar(50)作为数据类型,我想使其唯一(不允许相同的两个电子邮件地址).我找不到在SQL Server Management Studio中使这个列唯一的方法.

怎么做?

sql-server varchar unique

20
推荐指数
2
解决办法
2万
查看次数

如何从变量运行超过8000个字符的SQL语句?

我可以使用以下代码进行微小的查询:

DECLARE @sql VARCHAR(8000)
SET @sql = 'SELECT * FROM myTable'
Exec @sql
Run Code Online (Sandbox Code Playgroud)

上面的方法对于维护大量代码非常有用,特别是当我们需要进行一次更改并将它们反映到任何地方时.

我的问题是我想要提供给@sql变量的查询(它只有一个查询)使用超过25个表连接,其中一些在临时表变量上,包含复杂的操作,因此长度超过8000个字符.

我希望使用TEXT数据类型来存储此查询,但MSDN显示一条警告消息,Microsoft正计划从其下一版本中删除Text,NText和Image数据类型.我希望我的代码也能在未来运行.

我想将这个查询存储在一个单独的文件中,但由于它使用表变量和其他特定于过程的参数的连接,我怀疑这是否可行.

请告诉我一个将大型查询存储到变量中并在过程中多次执行的方法.

sql t-sql sql-server varchar sql-server-2008

20
推荐指数
4
解决办法
6万
查看次数

我怎么知道我的PostgreSQL服务器是否使用"C"语言环境?

我正在尝试尽我所能地优化我的PostgreSQL 8.3数据库表,我不确定是否需要使用varchar_pattern_ops某些列,我正在执行LIKE一个字符串的前N个字符.根据此文档,xxx_pattern_ops只有在"...服务器不使用标准'C'语言环境时"才需要使用.

有人可以解释这意味着什么吗?如何查看我的数据库使用的语言环境?

postgresql indexing varchar text locale

19
推荐指数
3
解决办法
2万
查看次数

在这里使用varbinary over varchar有什么好处?

前一段时间我问了一个关于SQL Server中层次结构/版本号排序的问题.( 如何使用SQL Server查询对"版本号"列进行排序).

提交的答案中包含了与TSQL编码挑战相关的链接.

在SQL2000解决方案中,作者演示了两个变体,一个使用并返回varchar,另一个使用varbinary.作者解释说他没有解释为什么这样做.

那么,我的问题是,方法上的差异有哪些主要差异/优势(如果有的话)?即为什么使用varbinary而不是varchar?

我省略了发布代码,因为它在上面的文章中总结得最为优雅.

sql sql-server varchar varbinary

19
推荐指数
2
解决办法
2万
查看次数

Hibernate映射枚举到varchar

假设我有这个枚举:

public enum TestEnum { EXAMPLE, FURTHER_EXAMPLE, LAST_EXAMPLE }
Run Code Online (Sandbox Code Playgroud)

使用此映射.hbm:

<property name="testEnum" column="TEST_COLUMN">
    <type name="org.hibernate.type.EnumType">
        <param name="enumClass">p.a.c.k.TestEnum</param>
    </type>
 </property>
Run Code Online (Sandbox Code Playgroud)

枚举被发送到数据库0,1,2.我想的值,以代替存储为EXAMPLE,FURTHER_EXAMPLELAST_EXAMPLE在varchar列.

如何将枚举映射到varchar列?

enums varchar hibernate hibernate-mapping

19
推荐指数
3
解决办法
2万
查看次数