醋醋百科网

Good Luck To You!

字符串拆分提示词分享(如何把字符串拆开)

字段值的字符串内容拆分为两列,其中括号里面的为一列,括号外为一列

SELECT i.存货编码, QUOTENAME([存货名称], '"') AS 存货名称, QUOTENAME([存货分类], '"') AS 存货分类, isnull(qc.iQuantity,0) 即时成品库存数, isnull(qb.iQuantity,0) 即时半成品库存数 , i.未结数, i.当月成品入库数 , i.当月半成品入库数 ,isnull(i.入库日期明细,'') 入库日期明细 FROM AA_Inventory_View_Short i LEFT join (select cinvcode,sum(iQuantity) as iQuantity from currentstock where cwhcode = '003' group by cInvCode ) qb on i.存货编码 = qb.cinvcode LEFT join (select cinvcode,sum(iQuantity) as iQuantity from currentstock where cwhcode = '001' group by cInvCode ) qc on i.存货编码 = qc.cinvcode LEFT JOIN v_shichangyuji_stock b ON i.存货编码 = b.cInvCode where i.存货编码 like '%A07%' sqlserver,请把上面的sql QUOTENAME([存货名称], '"') 字段值 的字符串的内容拆分为两列。括号里面的为一列,括号外为一列。 举例:ZM(101) 拆分为:ZM 和 101 格式如下 ZM(101) 请写sql代码要将 `QUOTENAME([存货名称], '"')` 字段值的字符串内容拆分为两列,其中括号里面的为一列,括号外为一列,

我们可以使用 SQL Server 的字符串函数 `CHARINDEX` 和 `SUBSTRING` 来实现。以下是修改后的 SQL 代码:

```sql

SELECT

i.存货编码,

-- 提取括号外的部分

CASE

WHEN CHARINDEX('(', QUOTENAME([存货名称], '"')) > 0

THEN SUBSTRING(QUOTENAME([存货名称], '"'), 2, CHARINDEX('(', QUOTENAME([存货名称], '"')) - 2)

ELSE REPLACE(QUOTENAME([存货名称], '"'), '"', '')

END AS 存货名称_括号外,

-- 提取括号内的部分

CASE

WHEN CHARINDEX('(', QUOTENAME([存货名称], '"')) > 0

THEN SUBSTRING(QUOTENAME([存货名称], '"'), CHARINDEX('(', QUOTENAME([存货名称], '"')) + 1, CHARINDEX(')', QUOTENAME([存货名称], '"')) - CHARINDEX('(', QUOTENAME([存货名称], '"')) - 1)

ELSE ''

END AS 存货名称_括号内,

QUOTENAME([存货分类], '"') AS 存货分类,

isnull(qc.iQuantity, 0) AS 即时成品库存数,

isnull(qb.iQuantity, 0) AS 即时半成品库存数,

i.未结数,

i.当月成品入库数,

i.当月半成品入库数,

isnull(i.入库日期明细, '') AS 入库日期明细

FROM

AA_Inventory_View_Short i

LEFT JOIN

(SELECT cinvcode, SUM(iQuantity) AS iQuantity

FROM currentstock

WHERE cwhcode = '003'

GROUP BY cInvCode) qb

ON

i.存货编码 = qb.cinvcode

LEFT JOIN

(SELECT cinvcode, SUM(iQuantity) AS iQuantity

FROM currentstock

WHERE cwhcode = '001'

GROUP BY cInvCode) qc

ON

i.存货编码 = qc.cinvcode

LEFT JOIN

v_shichangyuji_stock b

ON

i.存货编码 = b.cInvCode

WHERE

i.存货编码 LIKE '%A0x%';

```

代码解释:

1. `存货名称_括号外` 列:

- 使用 `CHARINDEX` 函数查找字符串中左括号 `(` 的位置。

- 如果存在左括号,则使用 `SUBSTRING` 函数从第二个字符开始提取到左括号前的部分。

- 如果不存在左括号,则直接使用 `REPLACE` 函数去掉双引号。

2. `存货名称_括号内` 列:

- 使用 `CHARINDEX` 函数分别查找左括号 `(` 和右括号 `)` 的位置。

- 如果存在左括号,则使用 `SUBSTRING` 函数提取左括号和右括号之间的部分。

- 如果不存在左括号,则返回空字符串。

这样就可以将 `QUOTENAME([存货名称], '"')` 字段值的字符串内容拆分为两列。

要将 `QUOTENAME([存货名称], '"')` 字段值的字符串内容拆分为两列,其中括号里面的为一列,括号外为一列,我们可以使用 SQL Server 的字符串函数 `CHARINDEX` 和 `SUBSTRING` 来实现。以下是修改后的 SQL 代码:


```sql

SELECT

i.存货编码,

-- 提取括号外的部分

CASE

WHEN CHARINDEX('(', QUOTENAME([存货名称], '"')) > 0

THEN SUBSTRING(QUOTENAME([存货名称], '"'), 2, CHARINDEX('(', QUOTENAME([存货名称], '"')) - 2)

ELSE REPLACE(QUOTENAME([存货名称], '"'), '"', '')

END AS 存货名称_括号外,

-- 提取括号内的部分

CASE

WHEN CHARINDEX('(', QUOTENAME([存货名称], '"')) > 0

THEN SUBSTRING(QUOTENAME([存货名称], '"'), CHARINDEX('(', QUOTENAME([存货名称], '"')) + 1, CHARINDEX(')', QUOTENAME([存货名称], '"')) - CHARINDEX('(', QUOTENAME([存货名称], '"')) - 1)

ELSE ''

END AS 存货名称_括号内,

QUOTENAME([存货分类], '"') AS 存货分类,

isnull(qc.iQuantity, 0) AS 即时成品库存数,

isnull(qb.iQuantity, 0) AS 即时半成品库存数,

i.未结数,

i.当月成品入库数,

i.当月半成品入库数,

isnull(i.入库日期明细, '') AS 入库日期明细

FROM

AA_Inventory_View_Short i

LEFT JOIN

(SELECT cinvcode, SUM(iQuantity) AS iQuantity

FROM currentstock

WHERE cwhcode = '003'

GROUP BY cInvCode) qb

ON

i.存货编码 = qb.cinvcode

LEFT JOIN

(SELECT cinvcode, SUM(iQuantity) AS iQuantity

FROM currentstock

WHERE cwhcode = '001'

GROUP BY cInvCode) qc

ON

i.存货编码 = qc.cinvcode

LEFT JOIN

v_shichangyuji_stock b

ON

i.存货编码 = b.cInvCode

WHERE

i.存货编码 LIKE '%A0x%';

```


代码解释:

1. `存货名称_括号外` 列:

- 使用 `CHARINDEX` 函数查找字符串中左括号 `(` 的位置。

- 如果存在左括号,则使用 `SUBSTRING` 函数从第二个字符开始提取到左括号前的部分。

- 如果不存在左括号,则直接使用 `REPLACE` 函数去掉双引号。


2. `存货名称_括号内` 列:

- 使用 `CHARINDEX` 函数分别查找左括号 `(` 和右括号 `)` 的位置。

- 如果存在左括号,则使用 `SUBSTRING` 函数提取左括号和右括号之间的部分。

- 如果不存在左括号,则返回空字符串。


这样就可以将 `QUOTENAME([存货名称], '"')` 字段值的字符串内容拆分为两列。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言