标签: varchar

PostgreSQL主键长度限制

主键列长度的限制是多少?我将使用varchar作为主键.我发现没有信息,它可以多长时间,因为PostgreSQL在用作主键时不需要指定varchar限制?

postgresql varchar primary-key

15
推荐指数
3
解决办法
8164
查看次数

Oracle中listagg的替代方案?

listagg是Oracle 11.2中引入的一个函数!现在这个功能正在困扰我们分配,我们正在从MySQL迁移到Oracle,我们有这个查询:

SELECT
    p_id,
    MAX(registered) AS registered,
    listagg(MESSAGE, ' ') within GROUP (ORDER BY registered) AS MESSAGE
  FROM
    umm_parent_id_remarks_v m
  GROUP BY
    m.p_id;
Run Code Online (Sandbox Code Playgroud)

只要我们知道在Oracle下面有什么烦恼它就会返回VARCAR而不是我们需要的CLOB! 文字很大,我们确实需要它是CLOB!

这是我试图做的!

创建一个CLOB类型的CLOB_T表!

然后创建功能

create or replace
function listaggclob (t in clob_t) 
  return clob
as 
  ret clob := '';
  i   number;
begin
  i := t.first;
  while i is not null loop
    if ret is not null then
      ret := ret || ' ';
    end if;
    ret := ret || t(i);
    i := t.next(i);
  end loop; …
Run Code Online (Sandbox Code Playgroud)

sql oracle varchar clob

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

[我的] SQL VARCHAR大小和Null-Termination

免责声明:我对SQL和数据库一般都很陌生.


我需要创建一个最多可存储32个字符的文本数据的字段." VARCHAR(32)" 是否意味着我的数据中只有32个字符?我是否需要为空终止保留额外的字符?

我进行了一个简单的测试,看起来这是一个WYSIWYG缓冲区.但是,我想从那些真正知道自己在做什么的人那里得到一个具体的答案.


我有一个C [++]背景,所以这个问题在我脑海中引起了警钟.

mysql sql varchar null-terminated

14
推荐指数
2
解决办法
4139
查看次数

为什么要为字符变化类型指定长度

参考关于字符类型的Postgres文档,我不清楚指定字符变化(varchar)类型的长度.

假设:

  • 字符串的长度对应用程序无关紧要.
  • 你不在乎有人把这个最大尺寸放在数据库中
  • 你有无限的硬盘空间

它确实提到:

短字符串(最多126个字节)的存储要求是1个字节加上实际字符串,其中包括字符空间填充.较长的字符串有4个字节的开销而不是1.长字符串由系统自动压缩,因此磁盘上的物理要求可能更少.非常长的值也存储在后台表中,因此它们不会干扰对较短列值的快速访问.在任何情况下,可存储的最长字符串大约为1 GB.(数据类型声明中n允许的最大值小于此值.更改此值没有用,因为使用多字节字符编码时,字符数和字节数可能会大不相同.

这是关于字符串的大小,而不是字段的大小,(听起来它总是会压缩大型varchar字段中的大字符串,而不是大型varchar字段中的小字符串?)

我问这个问题,因为指定一个更大的尺寸会更容易(和懒惰),所以你永远不必担心字符串太大.例如,如果我为地名指定varchar(50),我将获得具有更多字符的位置(例如Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch),但如果我指定varchar(100)或varchar(500),我就不太可能得到这个问题.

如果您的最大字符串长达400个字符,那么你会在varchar(500)和(任意)varchar(5000000)或text()之间获得性能影响吗?

如果有人对此有答案并且知道其他数据库的答案,也不感兴趣,请添加它.

我用谷歌搜索,但没有找到足够技术性的解释.

database postgresql varchar database-design types

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

如何存储大于varchar(max)的字符串var?

我正在尝试这样做:

DECLARE @myVar VARCHAR(MAX)
Loop with cursor
select @myVar = @myVar + bla bla bla
end loop
Run Code Online (Sandbox Code Playgroud)

循环结束时,@ myVar不完整,只包含8000个字符.

我曾尝试使用文本,但不允许使用本地变量.

对这个案子有什么好处?

xml var?

我刚看过这篇文章:

如何在SQL Server 2000中传递大于varchar(8000)的字符串参数?

检查连接到varchar(max)是否超出最大允许字符数

还有其他人通过网络.

问候.

sql varchar sql-server-2005 string-concatenation max

14
推荐指数
1
解决办法
3万
查看次数

在SQL Server中使用sql_variant而不是varchar有什么好处吗?

我目前有一个数据库表设置如下(EAV - 业务原因是有效的):

  • Id - int(PK)
  • 钥匙 - 独特,varchar(15)
  • 价值 - varchar(1000)

这允许我将混合值作为键/值对添加到我的数据库中.例如:

1   | 'Some Text'      | 'Hello World'
2   | 'Some Number'    | '123456'
etc.
Run Code Online (Sandbox Code Playgroud)

在我的C#代码,我用ADO.Net使用reader.GetString(2);检索值作为一个字符串,然后让我的代码的其他地方将其转换为所需,例如... Int32.ParseInt(myObj.Value);.我正在考虑通过将value列更改为sql_variant数据类型来增强我的表,但我不知道这会带来什么好处?基本上,它有什么优势将我的价值列是sql_variantVS varchar(1000)


为了更清楚,我在某处读到sql_variant以nvarchar(4000)的形式返回给调用的客户端(ouch)!但是,在返回它之前,我不能把它转换成它的类型吗?显然,我的代码必须进行调整,以将值存储为对象而不是字符串值.我想,sql_variant在我目前的情况下使用与其他类型相比有哪些优点/缺点?哦,值得一提的是我计划存储的所有内容都是值列中的日期时间,字符串和数字类型(int,decimal等); 我不计划存储和blob或图像等.

c# performance varchar sql-variant sql-server-2012

14
推荐指数
2
解决办法
8431
查看次数

如何在sql中将Varchar转换为Double?

当我尝试将varchar字段转换为double(数字)时,我的查询有问题.我有这个sql语句:

SELECT fullName, CAST(totalBal as numeric(9,2) FROM client_info ORDER BY totalBal DESC
Run Code Online (Sandbox Code Playgroud)

实际上我想以totalBal降序显示值.但由于该字段位于varchar中,因此结果集有时是错误的.当我尝试使用此语句进行查询时,这是结果集:

SELECT fullName, totalBal FROM client_info ORDER BY totalBal DESC 
Run Code Online (Sandbox Code Playgroud)

结果集是:

在此输入图像描述

排序totalBal不正确.所以我决定将varchar转换为数字,以便它可以完美地排序.任何的想法?

mysql sql varchar numeric

14
推荐指数
1
解决办法
12万
查看次数

将GUID转换为varchar(32)

如何将GUID作为36字符转换为VARCHAR(32)?

我正在尝试将数据从一个表复制到另一个表.这两个表中有两个相似的列.

  1. Table1.colx是一个GUID 36,因为连字符是总长度的字符
  2. 相应的列是table2.colx,但它是一个VARCHAR(32)

我正在寻找一种方法将GUID转换为VARCHAR,但我必须删除连字符.到目前为止,我试图找到一种方法是不成功的.

sql sql-server varchar ssms guid

14
推荐指数
1
解决办法
4万
查看次数

在hibernate中映射到varchar和nvarchar

如果数据库中有2列,例如.

code varchar(3)
name nvarchar(50)
Run Code Online (Sandbox Code Playgroud)

如何通过代码告诉hibernate传递varchar?

在hibernate映射中,字符串映射到nvarchar,它产生如下查询:

Select code, name From table where code=N'AAA'  (instead of code='AAA')
Run Code Online (Sandbox Code Playgroud)

这是非常糟糕的,因为它导致索引扫描而不是索引搜索操作(扫描所有索引节点而不是直接转到请求的节点)

由于代码在数百万行以及多个索引和外键中使用,因此将其从varchar更改为nvarchar将导致性能下降(更多IO操作,因为nvarchar使用的空间比varchar多两倍).

有没有办法告诉hibernate根据数据库类型进行映射,而不是Java类型?

谢谢

sql varchar hibernate nvarchar

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

SQL Server 2000中的最大varchar(max)大小

我想知道varcharSQL Server 2000中的最大大小是什么.当我在某处搜索时,它写了8000个字符,某处写了8060字节.哪一个是正确的?

sql-server varchar sql-server-2000

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