标签: varchar

在MySQL中使用varchar而不是date字段类型

是否有任何理由在MySQL中使用varchar字段而不是日期字段?我正在查看现有网站,我看到开发人员已经这样做了.有什么理由吗?

mysql varchar date

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

VARCHAR(x) - 设置长度是否会在MySQL性能方面将其变为"固定长度"?

我理解CHAR和VARCHAR之间的区别,一个是固定长度,另一个是可变长度,如果一行中的所有字段都是固定长度,表通常会表现得更好.

但是,我不清楚的是,如果我给VARCHAR一个长度,例如VARCHAR(500),这会将行保留为固定长度吗?

对于上下文,我有50列的干净表,大多数是TINYINT,但我需要在这个表中有两列作为VARCHAR,因为它们每个最多需要存储500个字符.确切的长度取决于用户输入,因此未知.

作为额外的限定,我真的不想将这些VARCHAR字段放入单独的引用表中,因为它会产生不必要的连接,并且不能非常有效地符合预期的查询模式.

任何帮助,将不胜感激.谢谢.

mysql database varchar database-design char

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

SQL Server中VARCHAR的最大大小有多严格?

即如果我创建一个VARCHAR(50)字段,如果我尝试为其分配一个长度为100个字符的值会发生什么?

SQL Server会让我这样做吗?它有点效率低吗?

sql-server varchar

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

在VARCHAR中使用max来获得结果> 999999?

如果有人将列作为VARCHAR2(256 CHAR)并且此列中只有数字,该怎么办?我想得到最高的数字.问题是:数字是> 999999但是最大值到varchar总是给我一个最大数字999999

我试过了,to_number(max(numbers), '9999999999999')但我仍然得到了999999,那是不可能的.有任何想法吗?谢谢

sql oracle varchar numbers max

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

如何在MySQL中将VARCHAR转换为BLOB?

我需要将MySQL列转换为使用BLOB而不是用于存储加密数据的VARCHAR.

我可以找到各种关于如何从BLOB转换为VARCHAR的帖子,但找不到从VARCHAR到BLOB的任何内容.

谁能告诉我怎么做?

mysql sql database varchar blob

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

如何使用Varchar(10)格式mm/dd/yyyy之间查询日期范围

我试图只显示"DateDue"在去年的记录.问题是我的日期是Varchar(10)的格式,因为我的数据源是从供应商那里进入我的数据库的.显然,使用此查询未正确过滤日期.是否可以将此(为了比较日期范围而临时)转换为在查询中使用的正确日期数据类型,但不能永久地更改该列的类型?

SELECT `DocNum`, `DateDue` 
FROM `prod_po_list` 
WHERE `DateDue` BETWEEN (DATE_FORMAT(curdate( ) - INTERVAL 365 DAY , '%m/%d/%Y' ))
AND DATE_FORMAT( CURDATE( ) , '%m/%d/%Y' )
Run Code Online (Sandbox Code Playgroud)

mysql varchar date between

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

从float转换为varchar时,我失去了精度

我正在使用Sql Server 2012.

我有2张桌子:

Create table tbl1 (formula varchar(50))

Insert into tbl1 values ('A-B')


Create table tbl2 (A float(53), B float(53))

Insert into tbl2 values (12.2466654, 11.7543289)
Run Code Online (Sandbox Code Playgroud)

我试图将结果变为变量@result:

Declare @result varchar(250);
Declare @a varchar(50);
Declare @b varchar(50);

Select @a = a from tbl2;
Select @b = b from tbl2;

Set @result = replace(tbl1, 'A', Cast(@A as float(53));
Set @result = replace(tbl1, 'B', Cast(@B as float(53));
Run Code Online (Sandbox Code Playgroud)

当我选择从中@result得到类似的东西时12.2-11.8,它几乎是好的,但我正在失去精确度.

也许你知道如何正确编写查询?

sql-server variables precision varchar

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

从 varchar 转换为 nvarchar 是否存在数据丢失

我在 SQL Server 中有一个列是varchar(MAX). 该列已填充​​该数据类型。我现在想将列转换为nvarchar(MAX)为接受 unicode 字符。

是否有任何数据丢失,当我从转换此列varchar(MAX)nvachhar(MAX)

sql-server encoding varchar nvarchar

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

Oracle - 对于包含少于 4K 行的行与 Varchar 列的 CLOB 列是否有任何性能影响?

如果您需要存储大部分(如果不是全部)小于 4K 字节的字符串,那么在 VARCHAR2 数据类型上使用 CLOB 数据类型是否有任何负面影响?

这里

CLOB 可以存储在单独的 LOB 段中,指向 LOB 段的指针与表的其余数据一起存储在数据块中。如果使用 CREATE TABLE 语句,您可以使用 LOB 存储子句控制 LOB 段的存储位置。默认情况下,小于 4000 字节的 LOB 将以与 VARCHAR2 相同的方式存储,即与其余数据内联。

这里

当您创建一个带有 CLOB 列的表时,CLOB 有一个名为“启用行中存储”的选项。这决定了 CLOB 是存储在与表相同的段中,因此与表行的其余部分一起存储,还是单独存储在单独的段中。在第二种情况下,表格行将包含一个指向 CLOB 数据位置的指针。一般将CLOB与表行一起存储效率更高,但是如果CLOB超过4000个字符左右,就不能再存储在行中,不管是否启用行中存储,都存储在CLOB段中或不。

从这些语句中,在我看来,即使所有行都包含少于 4K 行,但将列声明为 CLOB 并没有任何惩罚。这是准确的吗?

oracle varchar clob varchar2

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

如何比较MySQL格式为dd.mm.yyyy的日期(varchar)?

我希望能够在MySQL数据库中选择两个日期之间的所有日期,其中日期是varchar,格式为dd.mm.yyyy.

Database
date (varchar) | value
------------------------
31.01.2018     | 123
------------------------
28.02.2018     | 456
Run Code Online (Sandbox Code Playgroud)

这不起作用

Query
SELECT date,value from Database WHERE date BETWEEN '2018-01-01' AND '2018-01-31'
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用WHERE date LIKE '%.01.2018'整整几个月,但这还不够.

我可以在PHP中执行此操作,但不想这样做,因为这将花费太长时间.我想我可以使用这个CAST功能,但不知道如何.

在MySQL中执行此操作的最佳方法是什么?

mysql varchar casting date

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