SQL怎么截取一个字符串数字出现前的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL怎么截取一个字符串数字出现前的值相关的知识,希望对你有一定的参考价值。

参考技术A select substring(aa,1,charindex('||',aa)-1) aa from A

charindex() --输出长度
substring() --截取
参考技术B CHARINDEX('||','12||1')值为3 再用left函数

sql server 2000 中文字符串被截断是怎么回事

小弟是用DELPHI+ADO+SQLSERVER2000,在ADOCOMMAND中用INSERT INTO SQL语句写入。英文或数字正常,但汉字总有一半被截断。如输入“天津”,则只有一个“天”字。定议为NVARCHAR(40)。

SQLSERVER并未报错。

sql server数据库的字符串是这样的,当存放字符串的长度超过字段定义的长度时,则自动截取字符串为字段的长度。如某表的字段col定义为varchar(2),如果将“天津”存放到该字段时,因为“天津”是4个字节长度,于是存放到字段col时则截取成2个字节长度,因此只在col上保留了一个“天”字。因此只需扩充col的长度为varchar(4),而与你在delphi里将中间变量定义为40个长度是没有关系的。追问

可定义是在SQLSERVER中啊,这一列我定义为NVARCHAR(40)。在DELPHI中只是一般的STRING类型

追答

这个列是长度是40那就没有问题,敢问一下你这个insert 语句是直接在delphi里写的,还是通过调用存储过程来做的?如果是通过存储过程的话,看看有关这个字段的入参的长度以及中间变量的长度,如果这个字段的入参的长度以及中间变量的长度不足,也会自动截取掉。有些人定义变量时把长度忘写了,也会出现你说的那种情况,如v_col1 nvarchar,这样v_col1的长度就会默认为1。.
如果不是上述情况的话,不好意思,我也无能为力了,呵呵!

参考技术A 能是这个原因.如果网页不是你自己做的,那么是网页错误或电脑系统问题.
换台电脑试试.或换个浏览器.
换电脑看看是不是自己系统的问题啊!在看看别人的电脑可以不可以.先确认自己的问题先

如果是网络上的数据库你要联系网站后台的管理者.
如果是你自己的,在企业管理器中设计表,把字段的长度增加.

以上是关于SQL怎么截取一个字符串数字出现前的值的主要内容,如果未能解决你的问题,请参考以下文章

sql server截取某个特定字符前的字符串

SQL怎么截取小数点前的数字,但是不要四舍五入

oracle正则表达式截取某个字符前的数字

Oracle语句怎么截取和:之间的值?

vba中怎么将变量的值变为字符串

sql 截取某个字符之前的数据