java判断字符串是否超过数据库长度

java判断字符串是否超过数据库长度,第1张

在Java中,可以这样判断一个字符串是否超过数据库字段长度限制:

// 数据库中字段的长度限制

int maxLength = 64;

// 待校验的字符串

String str = "0123456789012345678901234567890123456789";

// 获取字符串的长度

int strLength = strlength();

// 判断字符串长度是否超过限制

if (strLength > maxLength) {

// 超过长度限制,输出提示

Systemoutprintln("字符串长度超出限制!");

} else {

// 没超过长度限制,可以进行数据库 *** 作

saveToDatabase(str);

}

这里我们首先定义了数据库字段的最大长度限制maxLength,比如这里是64。

然后我们获取待校验字符串str的长度strLength,使用strlength()方法。

最后通过比较strLength和maxLength,就可以判断字符串长度是否超标,如果超过就提示错误,否则可以进行数据库写入 *** 作。

这是判断字符串长度超过数据库字段限制的基本Java代码实现。我们还可以根据需要作些改进:

1 maxLength可以从数据库配置中读取,而不是硬编码在代码中。

2 可以定制化错误提示信息,给出数据库名称、字段名称等更加友好的提示。

3 可以将字符串截断到最大长度,而不是直接报错。这需要使用strsubstring(0, maxLength)截取前maxLength个字符。

4 可以将验证长度的逻辑封装到一个公共方法中,方便多处调用。

这些都是可以进一步优化和改进的点。但基本原理是获取字符串长度和数据库限制长度进行比较,这点不会变。

varchar是可变字符,varchar(2000)即可,不会浪费空间。

楼主为何要将历史记录存在access中呢?若您后台有sql server支持,建议您历史记录也存放在sql中,access的性能及对sql的语言支持都远不如 MSSQL。

VARCHAR限制了字符串的长度不能超过255个字符---哦,忘记了,这个可能access有此限制,sql可以的,最大varchar(8000)。

varchar(100)中的100并不多余,在未存储数据时用于占位,系统会用于预先计划分配空间,但直到真正存储数据时才确实分配存储空间。

个人看法:

1占用空间上varchar(100)和varchar(2000)没什么区别。

2但varchar(100)会效率较低,因为按你说的该字段会5-2000,若大于100,则您每次固定写入100会需要多次写 *** 作,众所周知写 *** 作是比较耗时的。

3查询性能方面,跟您这儿怎么存没太大关系,重要的还是常见的数据库查询优化,如索引、条件等等

对这个问题,我引用一下CSDN上的说法:

一。数据行结构

char(n): 系统分配n个字节给此字段,不管字段实际长度(后边用空格补齐)

varchar(n): 假设表中有M个varchar(或者nvarchar)类型的字段

先分配两个字节(用来表示M)

再分配2M个字节(表示各变长行的偏移)

此后字段值有多长,就分配多长

二。varchar(n)一定比char(n)节省空间么

不一定。

我见过这样的设计: varchar(3)

就算此字段为空,也还是比char(3)多用一个字节。

还有这样的设计: user_ip varchar(16)

对于这种数据长度变化不大的字段,用varchar只能浪费空间

结论: varchar适用于数据值长度不太短,且长度变化较大的字段

三。char(n)一定比varchar(n)速度快么

不一定

计算varchar的偏移是会花去一些cpu时间,但性能瓶颈不在此,在io

db的io单位是数据页(8192字节)(一页存有多个数据行,数据行不能跨页。当然image,text等例外) 因此一页中行越多,性能越好

另外,关于char和varchar的性能比较,

请参见该实验:

>

1、SQL Server中SQL 2005及其后的版本中,单条SQL语句理论上,没有长度限制,但硬件条件是否吃得消,当别论。

2、没有在官方的资料中查询到有相关限制的说法,有人尝试着写了一个长度为200K以上的语句,结果还是可以运行的。

3、可以自已实测,具体做法,在SQL的SQL Server Management Studio中运行如下语句

select    '1'  as ls union

select    '1'  as ls union

select    '1'  as ls union

select    '1'  as ls union

select    '1'  as ls union

select    '1'  as ls union

select    '1'  as ls union

select    '1'  as ls union

select    '1'  as ls union

--中间请再复制,一共8000行左右

select    '1'  as ls union

select    '1'  as ls union

select    '1'  as ls union

select    '1'  as ls union

select    '1'  as ls union

select    '1'  as ls union

select    '1'  as ls

在我的服务器上,SQL 2008R2下,双4核CPU,32G内存下,运行8千行左右这样的代码,需要的时间为1分钟左右。将这些代码保存为SQL脚本,可以看到,它的大小为200K左右。更长的代码是否能运行,我就不去测试了。

注意,上面的代码如果复制到8千行,在一般的台式电脑上安装的SQL Server下是否吃得消,我就不知道了。如果要尝试的话,1千行一千行的增加去试吧。

别在重要的生产服务器上玩这样的花样,玩死了哭不出来。

4、另外的提示,如果是编程,联接SQL,要注意它们自身对字符串的长度是否有限制。(VS中C++的string的限制是4G,这在当前基本上可以不考虑了)。

SQL语句查询某一字符串字段长度等于某个值的所有记录使用语句为:SQL=SELECT From 表名称 Where len(字符列名称)=长度值

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

SQL的LEN() 函数,LEN 函数返回文本字段中值的长度。

SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。

SELECT From Tabel中 号表示获得全部字段值,如需特定字段,可用:

SELECT 列名称1, 列名称2,列名称3 From Tabel

1数据库读取字段截取select substring(Name,0,5)+ '' as Tname from T_MobileBusiness 分割字段查询其他的用代号代替方法一:在aspx页中写代码。比如,你需要截取30个字符,多于30个字符的话,用前30个字符加省略号表示。<%#Eval("your_string")ToString()Length30Eval("your_string")ToString()Substring(0,30)+"":Eval("your_string")%其中your_string"表示你要绑定的字段名。方法二:在aspxcs页写代码。还是用StringSubstring()方法。你可以从数据库select时就使用该方法(准确的说,是SQL系统函数),或者把字段内容全部select出来,再使用Substring()方法。select substring('我们是',0,2) 结果为我们;汉字一个字占两个字符英文一个字母占一个字符数字也是一个字符中文标点 2字节英文标点 1字节

elect from table1 where length(字段)>2

select from table1 where length(字段名)>2

oracle 查询字段多少个字?

用oracle的length()函数。

oracle中怎么查询所有数据中一个字段的最大值?

用SELECT MAX(order_id) from plt_t_news_type 即可

以上就是关于java判断字符串是否超过数据库长度全部的内容,包括:java判断字符串是否超过数据库长度、数据库中的一个字段的数据大小不定如何设置字段的长度查询最快又节省空间、SQL查询语句最长多少个字符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/9845627.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存