"nfaoh 1f3 fq1"这里面有两个空格,我怎么找到第一个空格的位置.
我需要把第一个空格用"-"代替.
变成
"nfaoh-1f3 fq1"
谢谢

解决方案 »

  1.   

    select stuff('nfaoh 1f3 fq1',charindex(' ','nfaoh 1f3 fq1'),1,'')
      

  2.   

    找第一个空格select charindex(字段 , ' ') from tb 替换第一个空格
    select left(字段 , charindex(字段 , ' ') - 1) + '-' + substring(字段 , charindex(字段 , ' ') + 1 , len(字段)) from tb
      

  3.   

    declare @str varchar(20)
    set @str='nfaoh 1f3 fq1'
    set @str=stuff(@str,charindex(' ',@str),1,'-')
    print @str
      

  4.   

    CHARINDEX ( expression1 ,expression2 [ , start_location ] ) 
    expression1    一个表达式,其中包含要查找的字符的序列。expression1 是一个字符串数据类别的表达式。expression2    一个表达式,通常是一个为指定序列搜索的列。expression2 属于字符串数据类别。start_location    开始在 expression2 中搜索 expression1 时的字符位置。如果 start_location 未被指定、是一个负数或零,则将从 expression2 的开头开始搜索。start_location 可以是 bigint 类型。备注备注如果 expression1 或 expression2 之一是 Unicode 数据类型(nvarchar 或 nchar)而另一个不是,则将另一个转换为 Unicode 数据类型。CHARINDEX 不能与 text、ntext 和 image 数据类型一起使用。如果 expression1 或 expression2 之一为 NULL,并且数据库兼容级别为 70 或更高,则 CHARINDEX 将返回 NULL。如果数据库兼容级别为 65 或更低,则 CHARINDEX 将仅在 expression1 和 expression2 都为 NULL 时才返回 NULL 值。如果在 expression2 内找不到 expression1,则 CHARINDEX 返回 0。CHARINDEX 将根据输入的排序规则执行比较操作。若要以指定排序规则进行比较,则可以使用 COLLATE 将显式排序规则应用于输入值。返回的开始位置从 1 开始,而非从 0 开始。
    返回类型返回类型如果 expression2 的数据类型为 varchar(max)、nvarchar(max) 或 varbinary(max),则为 bigint,否则为 int。