【问题标题】:t-sql unicode function returns 0t-sql unicode 函数返回 0
【发布时间】:2012-02-07 14:06:20
【问题描述】:

我在名为的 nvarchar(100) 列上保存了字符串 地址

SELECT UNICODE(address) FROM clients

这是结果集


0

它是什么符号?如何在字符串的其他位置找到此符号的索引?

【问题讨论】:

    标签: sql-server tsql unicode


    【解决方案1】:

    如 BOL 中所述

    返回 Unicode 标准定义的整数值,用于 输入表达式的第一个字符。

    所以你也可以将第一个符号显示为二进制来检查它

    SELECT UNICODE(address), CAST(SUBSTRING(address, 1, 1) as varbinary(2)) FROM clients
    

    下面也返回0

    SELECT UNICODE(CAST(0x00 AS NVARCHAR))
    SELECT UNICODE(NCHAR(0))
    

    所以 - 最简单的答案 - 它是一个 NCHAR(0) - 字符

    要在字符串中查找NCHAR(0),请参见以下示例:

    DECLARE @str NVARCHAR(100) = N'John'+NCHAR(0)+N'Smith'
    SELECT CHARINDEX(NCHAR(0) COLLATE Latin1_General_BIN, @str) 
    

    【讨论】:

    • SELECT charindex(clients.address, nchar(0)) from clients where charindex(clients.address, nchar(0))>0 它返回:0 行受影响。如何找到 nchar(0) 的索引?
    • 你说得对:它是一个 NCHAR(0) 字符。但我在字符串中找不到它的索引。
    • 更新了搜索0值的答案
    • 您在 CHARINDEX 中使用了错误的参数序列。第一个参数是您要查找的内容,第二个参数 - IN WHAT
    • 谢谢。 charindex - 这是典型的错误。整理对我有帮助。
    猜你喜欢
    • 2014-01-19
    • 2010-10-02
    • 2018-03-21
    • 2015-12-03
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多