【问题标题】:How to split a value by separator?如何通过分隔符拆分值?
【发布时间】:2017-06-12 20:07:57
【问题描述】:

我正在运行优势数据库 10。

我的一个字段数据库具有“客户名称”,它存储为“姓氏,名字”。我希望能够从该字段中提取名字。我认为这可行,但没有骰子:

SELECT   [Customer Name]
        ,LEFT([Customer Name], CHARINDEX(',', [Customer Name]) - 1) AS [Surname]
        ,REPLACE(SUBSTRING([Customer Name], CHARINDEX(',', [Customer Name]), LEN([FullName])), ',', '') AS [FirstName]
FROM    orders

我没有收到任何结果。这是错误消息:

poQuery: Error 7200: AQE Error: State = S0000; NativeError = 2158; [iAnywhere Solutions][Advantage SQL Engine]Scalar function not found: charindex -- Location of error in the SQL statement is: 57 (line: 2 column: 32)

基本上我需要 |客户名称 | 多伊,约翰

变成: |名字|姓氏 | 约翰 |能源部

【问题讨论】:

  • 欢迎来到 StackOverflow!如果您想获得任何帮助,请阅读并关注How to ask a good SQL question,并且不要让您的问题被否决或关闭
  • 好的,那么“没有骰子”是什么意思?你看到的实际行为是什么?您是否收到错误消息或意外结果?请澄清。
  • 对不起!我的意思是我没有收到任何结果。这是错误消息:poQuery:错误 7200:AQE 错误:状态 = S0000;本机错误 = 2158; [iAnywhere 解决方案][Adv​​antage SQL Engine]Scalar function not found: charindex -- SQL 语句中的错误位置是:57 (line: 2 column: 32)

标签: sql advantage-database-server


【解决方案1】:

使用POSITION(',' IN field) 语法。

在此处查看文档:

http://devzone.advantagedatabase.com/dz/webhelp/Advantage12/master_string_functions.htm

您的查询看起来像这样(未经测试):

SELECT   [Customer Name]
        ,LEFT([Customer Name], POSITION(',' IN [Customer Name]) - 1) AS [Surname]
        ,REPLACE(SUBSTRING([Customer Name], POSITION(',' IN [Customer Name]), LENGTH([FullName])), ',', '') AS [FirstName]
FROM    orders

【讨论】:

  • 谢谢詹斯!我不太确定如何在 SQL 视图中对其进行格式化。你会建议如何格式化它?我试图插入 POSITION 代替 CHARINDEX。
  • 非常感谢!需要稍作改动。 LEN 必须更改为 LENGTH。除此之外 - 它完全按照我的要求分裂。谢谢!这是更新后的代码:' SELECT [Customer Name] ,LEFT([Customer Name], POSITION(',' IN [Customer Name]) - 1) AS [Surname] ,REPLACE(SUBSTRING([Customer Name], POSITION( ',' IN [Customer Name]), LENGTH([Customer Name])), ',', '') AS [FirstName] FROM orders '
猜你喜欢
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
  • 2015-02-05
  • 2013-03-03
  • 2019-05-11
  • 1970-01-01
  • 2014-03-02
  • 2012-03-15
相关资源
最近更新 更多