/**
* 截取符合oracle varchar长度的字符集
*
* @author 陈兵
*
*/
public class SplitString {
public static String subStringByByte(String str,int byteNum) throws Exception {
byte bt[] = str.getBytes();
System.out.println(" Length of this String ===> " + bt.length );
if (byteNum >= 1) {
if (byteNum > bt.length ){
String substrx = new String(bt, 0, bt.length);
return substrx;
} else{
String substrex = new String(bt, 0, byteNum);
return substrex;
}
} else {
System.out.println("输入错误!!!请输入大于零的整数:");
throw new Exception();
}
}
public static void main(String[] args){
String str = "我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF我我我ABC汉DEF";
for(int i=1;i<=100;i++){
try {
String res = subStringByByte(str, i);
System.out.println(res);
} catch (Exception e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
}
JS的截取方法:
function substr(str, len)
{
if( ! str || ! len)
{
return '';
}
// 预期计数:中文2字节,英文1字节
var a = 0;
// 循环计数
var i = 0;
// 临时字串
var temp = '';
for (i = 0; i < str.length; i ++ )
{
if (str.charCodeAt(i) > 255)
{
// 按照预期计数增加2
a += 2;
}
else
{
a ++ ;
}
// 如果增加计数后长度大于限定长度,就直接返回临时字符串
if(a > len)
{
return temp;
}
// 将当前内容加到临时字符串
temp += str.charAt(i);
}
// 如果全部是单字节字符,就直接返回源字符串
return str;
}
分享到:
相关推荐
由于JavaScript中字符串的length属性是按照字节来计算的,对于ASCII字符集(0x00到0xff)中的字符来说,一个字符通常占用一个字节的长度。然而,对于中文、日文、韩文等使用双字节或多字节字符集的语言,使用length...
本文将详细介绍几种常用的SQL截取字符串函数及其应用场景,包括`LEFT`、`RIGHT`、`SUBSTRING`以及一些高级用法如使用`CHARINDEX`、`PATINDEX`、`REPLACE`和`STUFF`等函数来实现更复杂的字符串处理。 #### 一、基本...
本文将详细介绍如何在.NET环境中处理和传递长度超过4000个字符的字符串至Oracle数据库。 #### 1. 使用Blob类型存储长字符串 对于长度远超4000个字符的数据,推荐使用`BLOB`类型。BLOB类型可以存储非常大的二进制...
自定义函数`FUNCTION_SF_SPLIT_STRING`如上所示,是一个典型的用于分割字符串的函数,它接受两个参数:待分割的字符串`STRING`和用作分隔符的子字符串`SUBSTRING`,返回一个`VARCHAR2`类型的数组,其中包含了分割后...
然而,实际上MySQL的`VARCHAR`类型在存储时会额外使用1到2个字节来记录字符串的长度,这意味着即使使用UTF-8编码,`VARCHAR(50)`仍能存储50个英文字符或16个中文字符。 在MySQL 5.1及以上版本中,`VARCHAR`的最大...
在Oracle数据库中,`VARCHAR`与`VARCHAR2`是两种常见的用于存储可变长度字符串的数据类型。尽管它们在名称上相似,但在实际应用中却存在一定的差异。本文将详细介绍这两种数据类型的特性及其应用场景,帮助读者更好...
对于截取字符串,Oracle中有两个函数substr(),instr()截取规则的字符串使用起来较为方便,这里重新封装了一个函数 --调用函数参数说明: --num_char(str1 varchar2,str2 varchar2,indexs number) --str1 原字符串 --...
根据提供的信息,本文将详细介绍一...这种自定义函数能够有效地解决复杂场景下的字符串处理问题,提高数据库应用的灵活性和效率。对于需要频繁进行字符串操作的应用来说,了解并掌握此类函数的使用方法是非常有帮助的。
截取从字符串左边开始N个字符 Declare @S1 varchar(100) Select @S1=’http://www.xrss.cn’ Select Left(@S1,4) ———————————— 显示结果: http B.截取从字符串右边开始N个字符(例如取字符www.163.com) ...
下面将详细介绍如何在C#环境下通过Oracle.NET接口实现将长于4000字符的字符串转化为CLOB类型并存入Oracle数据库的过程。 ### 一、CLOB类型的简介 CLOB是Oracle数据库中用于存储大量文本数据的一种数据类型,它可以...
例如,MySQL中的varchar类型字段长度最大为65,535个字节,而在GP数据库中,这个限制可能有所不同,这取决于其MPP架构和分片策略。 在Oracle数据库中,varchar2类型的字段长度可高达4,000个字符,但在特定情况下,如...
DECLARE @s VARCHAR(MAX)= @words --待截取字符串 DECLARE @temp VARCHAR(MAX)='' --临时变量 SELECT @temp=@temp+SUBSTRING(ch, sv.number, 1) FROM (SELECT @s AS ch) t CROSS APPLY [master].dbo.spt_...
`varchar`是可变长度的字符串类型,它只占用实际存储数据所需的字节数加上一个额外的字节来记录字符串的长度。相比于`char`,`varchar`更节省空间,但可能会导致行内的不均匀分布,影响数据库的物理存储和查询效率。...
1. **表中的VARCHAR2字段存储了多字节字符**:如果某个字段的数据类型为VARCHAR2,并且其长度限制不足以完全容纳某些多字节字符(例如汉字),则可能导致数据截断。当尝试查询这些被截断的多字节字符时,Oracle...
### 数据库字符串处理知识点 #### 一、字符串处理在数据库中的重要性 在数据库操作中,字符串处理是一项非常重要的技能。无论是数据清洗、格式化还是提取有用信息,字符串处理功能都发挥着至关重要的作用。例如,在...
对于“hello world”这样的字符串,VARCHAR(255)会先计算字符串长度(这里是11),再加上一个或两个字节来记录长度,总共使用12个字节。这种灵活的存储方式在处理长度不定的字符串时能节省大量空间,但更新数据可能...
### 整个数据库内字符串搜索 #### 知识点概览 本文将详细介绍如何在SQL Server数据库中实现全库范围内的字符串搜索功能。通过自定义存储过程的方式,我们可以有效地搜索数据库中的所有表,并针对每一张表中的指定...
综上所述,`VARCHAR2(BYTE)`和`VARCHAR2(CHAR)`的主要区别在于长度单位的不同:前者按字节计数,后者按字符计数。在实际应用中,根据数据的具体特点选择合适的长度单位是非常重要的。特别是在处理包含大量非ASCII...
它只占用实际存储数据所需的字节数,加上额外的两个字节来记录字符串长度。这使得`varchar`在存储长度不固定的数据,如用户评论、文章内容等时更加节省空间。然而,由于长度不固定,数据库在处理`varchar`字段时可能...
总的来说,熟练掌握`substring`和`patindex`函数,以及了解其他数据库系统的类似功能,对处理SQL中的字符串操作至关重要。通过这些函数,你可以轻松地从大型文本字段中提取关键信息,从而进行更复杂的分析和处理。