我对SQL命令非常陌生,请跟我一起讨论。
我有一张桌子:
dbo.Product
两栏:
SKU Name
--- ----
100A-B (F102397) 1 AFFF C-103
我想将SKU(100A-B)与JUST PART of Name(F102397)交换,而SKU栏中没有括号。
所以它会像:
SKU Name
--- ----
F102397 (100A-B) 1 AFFF C-103
仅仅是FYI,“名称”列并不总是一致的。这意味着它并不总是像“1 AFFF C-103”。有时它可能是“1AFFFC-103”或“1AFFF C-103”等......但具有不同的值。当有空格/没有空格时,你需要担心下半场吗?
无论如何这样做?任何帮助将不胜感激。 :) 我正在使用SQL-Server 2005。
** 编辑 **
更多示例以及我想从中获得的内容。
大多数数据的示例。它与一些SKU中的空间混乱,但这是我无法改变的选择。
我将()保留在“名称”字段中。
SKU Name
--- ----
100A-B (F102397) 1 AFFF C-103
101 A-F (F011889) TEST ITEM
101 U-X (F060796) TEST ITEM 2
102A-B (F102497) TEST ITEM 3
RESULT
SKU Name
--- ----
F102397 (100A-B) 1 AFFF C-103
F011889 (101 A-F) TEST ITEM
F060796 (101 U-X) TEST ITEM 2
F102497 (102A-B) TEST ITEM 3
答案 0 :(得分:2)
您应该查看可用的string functions。通常可以用这些来烹饪。
update dbo.Product
set SKU = substring(Name, 2, charindex( ')', Name)-2),
Name = stuff(Name, 2, charindex( ')', Name)-2, SKU)
这假设在“名称”字段的开头始终有(
。名称字段中的某处始终会有)
。 Name或SKU都不包含空值
如果不是这种情况,您必须在问题中指定您想要的结果。
如果您只需要查询数据而不是更新,请使用选择语句。
select substring(Name, 2, charindex( ')', Name)-2),
stuff(Name, 2, charindex( ')', Name)-2, SKU)
from YourTableName