标签: varchar

SQL Server - 更好的数据类型来存储大字符串值

我们有一个数据库表,有大约200,000条记录.其中包括3个ntext列,其中包含长度为4000-70000的字符串数据.但桌面上的一个选择只需要1分钟以上的时间来返回数据.甚至使用where条件和索引来为条件选择12000条记录需要40秒.

所以我们决定将这些数据类型更改为nvarchar(max),但仍然没有注意到主要区别,因为它会将数据存储在行之外,因为它太长了.有什么更好的方法可以提高我的表的性能?

sql sql-server varchar nvarchar query-optimization

0
推荐指数
1
解决办法
9812
查看次数

将varchar MM/DD/YYYY数据转换或转换为日期时间MM/DD/YYYY

我正在尝试将varchar mm/dd/yyyy数据转换/转换为datetime mm/dd/yyyy格式,以便我可以使用between子句查询范围.

我之前看过一个类似的问题,但没有大肆宣传,我不知道如何解决这个问题.

sql sql-server datetime varchar

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

将SQL列类型设置为varchar(50),只接受整数

正如标题所说,我创建了一个表,其中一列是varchar(50)类型,但它拒绝INSERT语句,其中第一个值是字符串:

表创建:

CREATE TABLE Fiddy(Lname varchar(50),
-> Height int,
-> Width int,
-> Gas int);
Run Code Online (Sandbox Code Playgroud)

插入尝试

insert into Fiddy VALUES(Smith, 54, 43, 1);
ERROR 1054 (42S22): Unknown column 'Smith' in 'field list'
Run Code Online (Sandbox Code Playgroud)

插入尝试

insert into Fiddy values (4, 5, 5, 6);
Query OK, 1 row affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

选择*

select * from Fiddy;
+-------+--------+-------+------+
| Lname | Height | Width | Gas  |
+-------+--------+-------+------+
| 4     |      5 |     5 |    6 |
+-------+--------+-------+------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

mysql sql database varchar

0
推荐指数
1
解决办法
1391
查看次数

varchar(max)在变量中设置时截断字符串

我正在尝试打印动态查询,但正在发生的是打印查询时字符被截断.

declare @sql varchar(max)
set @sql = cast('select*from.................length is huge' as varchar(max))
print @sql
Run Code Online (Sandbox Code Playgroud)

知道怎么解决吗?

sql sql-server varchar truncate

0
推荐指数
1
解决办法
897
查看次数

MySQL中的char/varchar/text/longtext列是否占用文件系统中的完整大小,即使对于部分填充的单元格也是如此?

MySQL中的varchar/text/longtext列是否占用文件系统中的全长大小,即使是不完整的单元格?

博客文章为例,我有以下几列,并在其中添加了一个给定的字符串.

CHAR (72) - can store upto 72 characters - i put in a string "abcd"
VARCHAR (72) - can store upto 72 characters - i put in a string "abcd"
TINYTEXT - can store upto 255 characters - i put in a string "abcd"
TEXT - can store upto 65,535 characters - i put in a string "abcd"
LONGTEXT - can store upto 4,294,967,295 characters - i put in a string "abcd"
Run Code Online (Sandbox Code Playgroud)

一行中每列的实际物理空间占用多少?

每列能够存储的完整大小?

或者只有存储"abcd"所需的数量?

mysql varchar longtext tinytext

0
推荐指数
1
解决办法
810
查看次数

SQL Server -Order BY

我在表中有一个varchar(12)字段,但该字段中的数据是日期 - 2016年1月1日(我有大约5,000个日期).我一直试图做一个ORDER BY但它似乎没有按日期排序.如果它不是DateTIME字段,我将如何在该字段上进行ORDER BY?

sql sql-server varchar date sql-order-by

0
推荐指数
1
解决办法
97
查看次数

Redshift varchar太窄了

我有一个表,我填充了来自文件的制表符分隔数据,这些数据的编码似乎不是utf-8,如下所示:

CREATE TABLE tab (
    url varchar(2000),
    ...
);

COPY tab
FROM 's3://input.tsv'
Run Code Online (Sandbox Code Playgroud)

复制完成后,我运行

SELECT
MAX(LEN(url))
FROM tab
Run Code Online (Sandbox Code Playgroud)

返回1525.我想,因为我在浪费空间,所以我可以通过使用varchar(2000)而不是将列重新调整大约四分之一varchar(1525).但是既不重做COPY也不重新设置新表并插入已导入的数据.在这两种情况下,我得到

error:  Value too long for character type
Run Code Online (Sandbox Code Playgroud)

为什么列不能保存这些值?

varchar amazon-web-services amazon-redshift

0
推荐指数
1
解决办法
278
查看次数

仅在日期时间列中显示日期然后将其转换为 Varchar 的最有效方法

我想显示数据类型为datetimeas的列varchar。但我不需要显示时间。这是我目前使用的

SELECT 
    CONVERT(varchar(50), CONVERT(date, [Date_Created])) AS 'Date_Created'
FROM 
    Accounts_Table
Run Code Online (Sandbox Code Playgroud)

这样做是否有更高的效率或更少的 CPU 扩展?

t-sql sql-server select datetime varchar

0
推荐指数
1
解决办法
59
查看次数

是否有一个不那么冗长和kludgy的方法来使其他无效的SQL参数安全?

我有用于将记录插入SQL Server表的代码,在某些情况下,它有一些空值(如果没有首先用伪null(空)val替换).具体来说,它们是varchars.

如果我不检查null并在这些实例中分配string.empty:

if (null == _PatternOrdinal)
{
    rs.PatternOrdinal = string.Empty;
}
else
{
    rs.PatternOrdinal = _PatternOrdinal;
}
Run Code Online (Sandbox Code Playgroud)

...它抛出异常," 参数化查询"(@Unit varchar(25),@ ReportID int,@ NextExecution datetime,@ NextEx'需要参数'@PatternOrdinal',这是未提供的. "

IOW,如果代码只是这样:

rs.PatternOrdinal = _PatternOrdinal;
Run Code Online (Sandbox Code Playgroud)

...而不是上面的if块,它崩溃了.

所以我必须用几个参数做到这一点.是否有一种不那么冗长的方法来规避这种周期性的脱轨?

c# sql-server varchar

-1
推荐指数
1
解决办法
46
查看次数

在Varchar上左加入INT

我正在编写一份报告,以显示客户在家中建设时需要的功能.我想离开连接2个表但数据的存储方式使我很难进行连接.

表1 tbl_Main_Holding有一个名为Requirements的字段,数据存储为varchar,可以有多个值,如1,4,7

1 = "Eco-Build"
4 = "Conservatory"
7 = "Basement"
Run Code Online (Sandbox Code Playgroud)

表2 [tbl_Features]具有字段ID(INT)和描述(Varchar)

SELECT * FROM dbo.tbl_Main_Holding AS rm 
LEFT JOIN [dbo].[tbl_Features] AS f
ON rm.Requirements = f.id
Run Code Online (Sandbox Code Playgroud)

下面的连接不会工作,因为我需要将varchar转换为INT但是这不是我的问题我的问题是我如何显示已选择多个功能的客户端的结果,这个离开加入如何工作?我使用SQL Server 2008,两个表的数据都存储起来. 在此输入图像描述 在此输入图像描述

t-sql sql-server int varchar left-join

-1
推荐指数
1
解决办法
856
查看次数

验证 sql server 上的 varchar 列

我想创建一个查询来验证一列,以便它只允许三种不同的条目类型,即名为“问候”的表的“hello”、“hi”或“hey”,并防止输入任何其他文本。如果此方法不可行,是否有办法使其在输入任何其他文本(如“good day”)时变为“错误”

t-sql sql-server validation varchar check-constraints

-1
推荐指数
1
解决办法
327
查看次数

创建表时出现Android SQLite错误(VARCHAR导致错误)

import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

SQLiteDatabase db;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    db = this.openOrCreateDatabase("Practice", MODE_PRIVATE, null);

    db.execSQL("CREATE TABLE IF NOT EXISTS blah (subjects VARCHAR, notes VARCHAR, amount VARCHAR");
}
Run Code Online (Sandbox Code Playgroud)

错误日志:

E/SQLiteLog:(1)在"VARCHAR"附近:语法错误06-30 23:46:21.834 11420-11420/com.asd.sqltesting D/AndroidRuntime:关闭VM 06-30 23:46:21.835 11420-11420/com.asd.sqltesting E/AndroidRuntime:FATAL EXCEPTION:main进程:com.asd.sqltesting,PID:11420 java.lang.RuntimeException:无法启动活动ComponentInfo {com.asd.sqltesting/com.asd.sqltesting.MainActivity} :android.database.sqlite.SQLiteException:near"VARCHAR":语法错误(代码1):,同时编译:CREATE TABLE IF NOT EXISTS blah(subject VARCHAR,notes VARCHAR,amount VARCHAR at android.app.ActivityThread.performLaunchActivity(ActivityThread) .java:2298)在Android.app.ActivityThread.access $ 800(ActivityThread.java:144)的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)android.app.ActivityThread $ H.handleMessage(ActivityThread.java) :1278)android.app.Handler.dispatchMessage(Handler.java:102)android.app.Looper.loop(Looper.java:135)android.app.ActivityThread.main(ActivityThre)ad.java:5221)at java.lang.reflect.Method.invoke(Native Method)at java.lang.reflect.Method.invoke(Method.java:372)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.运行(ZygoteInit.java:899)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)引起:android.database.sqlite.SQLiteException:near"VARCHAR":语法错误(代码1): ,同时编译:CREATE TABLE IF NOT EXISTS …

java sqlite varchar android

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

使用VS 2013,我试图创建一个简单的C++程序,VARCHAR将无法正常工作

使用VS 2013,我试图创建一个简单的C++程序,VARCHAR将无法正常工作.我已经尝试将变量声明为VARCHAR许多不同的方式,并且它总是无效的.我使用了所有这些包括:

#include "windows.h" 
#include "string.h"
#include "stdlib.h"
#include "stdio.h"
#include "direct.h" 
#include "stdafx.h"
Run Code Online (Sandbox Code Playgroud)

但是我仍然在这一行上出错:

EXEC SQL BEGIN DECLARE SECTION;
VARCHAR  emp_name[10];
EXEC SQL END DECLARE SECTION;

Intellisense: identifier "VARCHAR" is undefined.
Run Code Online (Sandbox Code Playgroud)

我在Visual Studio 6.0中编写了C++,所以我不是C的假人,只是Visual Studio 2013.请指教.

c++ varchar

-6
推荐指数
1
解决办法
263
查看次数