1

文字列データ「Test123」を「Test」と「123」の2つの列に分割するにはどうすればよいですか。

前もって感謝します。

4

2 に答える 2

1

このために以下の関数を作成しました。他に簡単な方法がある場合は、ここで更新してください

/*
SELECT * FROM [dbo].[SPLIT_NUMERIC_STRING] ('TEST1235745DFGBFVNYT HGEFNEYGV  @ADBSD H# CHSC5ae23674523')
*/
CREATE FUNCTION [dbo].[SPLIT_NUMERIC_STRING] 
   (  @ColumnName VARCHAR(MAX)
   ) 
   RETURNS @TABLEOFVALUES TABLE 
      (  NUMERICDATA   VARCHAR(MAX), 
         STRINGDATA VARCHAR(MAX) 
      ) 
AS 
   BEGIN

        DECLARE @Column1 VARCHAR(100)
        DECLARE @Column2 VARCHAR(100)
        DECLARE @StartPosition INT
        DECLARE @String VARCHAR(100)
        DECLARE @NUMBER INT
        DECLARE @ENDPosition INT
        SET @Column1 = ''
        SET @Column2 = ''
        SET @StartPosition = 1

        SELECT @ENDPosition =  LEN(@ColumnName)

        WHILE @ENDPosition > 0 
        BEGIN

            SELECT @String = SUBSTRING(@ColumnName,@StartPosition,1)
            SELECT @NUMBER = ISNUMERIC(@String)

            IF (@NUMBER = 1)
            BEGIN
             SET @Column1 = @Column1 + @String
            END 
            ELSE
             SET @Column2 = @Column2 + @String 

            SET @StartPosition = @StartPosition + 1
            SET @ENDPosition = @ENDPosition - 1
        END
        INSERT INTO @TABLEOFVALUES (NUMERICDATA,STRINGDATA)
        SELECT @Column1 AS NUMERICDATA,@Column2 AS STRINGDATA

      RETURN 

   END
于 2012-07-09T13:40:19.173 に答える
0

いくつかのアイデア:

  1. 正規表現をSQLで直接使用できるように機能を構築します。例: http: //www.codeproject.com/Articles/42764/Regular-Expressions-in-MS-SQL-Server-2005-2008
  2. 部分文字列を使用する
  3. 文字と数字の長さが固定されていない場合は、たとえばWHILEループを使用して、数字を見つけた後に次々に文字を取得することもできます。
于 2012-06-26T06:18:23.467 に答える