David McAfee
davidmcafee at gmail.com
Fri May 11 14:13:19 CDT 2012
I've done this once or twice, but it is best to use a junction table to store the productID and CategoryID. I know this is most likely Access that he is doing this in, but I do have a UDF for MS SQL that will take a muti-value field and return a table: CREATE FUNCTION [dbo].[udfListToTable] (@HList VarChar(1000), @Delimiter CHAR(1)) RETURNS @ListTable TABLE (Mystr VARCHAR(20)) AS BEGIN --Purpose: To convert a Comma delimited text to a Temp Variable table To help avoid dynamic sql -- Instead you can join the temp table or use it in your where clause if a field is IN the subquery DECLARE @Mystrtext as VarChar(20) IF RIGHT(RTRIM(@HLIST),1) <>@Delimiter SET @HList = @HList + @Delimiter WHILE CHARINDEX(@Delimiter, @HList) > 0 BEGIN IF CHARINDEX(@Delimiter, @HList) > 0 BEGIN SELECT @Mystrtext =LEFT(@HList, CHARINDEX(@Delimiter, @HList)-1) END ELSE BEGIN SELECT @Mystrtext = RTRIM(LTRIM(@HList)) END --Insert into Variable Table INSERT INTO @ListTable(Mystr) SELECT RTRIM(LTRIM(@Mystrtext)) --Remove Item from list SELECT @HList = RIGHT(RTRIM(@HList), LEN(RTRIM(@HList)) - CHARINDEX(@Delimiter, @HList)) END RETURN END --Call in this manner: --SELECT * FROM dbo.udfListToTable('jim,joe,bob,tom',',') /* results: jim joe bob tom */ On Fri, May 11, 2012 at 10:23 AM, Susan Harkins <ssharkins at gmail.com> wrote: > A reader is considering the multi-value field for the following reason: > > "I have to format the data in this way as a last step to export to the > e-commerce platform. As I import a CSV table into the platform, it > requires stuff like product name, sku, price, weight, etc. It also has a > field for category. A product can belong to multiple categories, and the > way the it imports/exports is to fill that field with the category name, > separated by semicolons, in the one field. A product can be a member of up > to 20 categories (all separated by semicolons)." > > I'd like to steer him away from the multi-value field. I know combining > field values into a single line is a common request but I've never had to > do it myself -- any suggestions? > > Thanks! > Susan H. > > -- > AccessD mailing list > AccessD at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/accessd > Website: http://www.databaseadvisors.com >