Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6731731
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T10:33:50+00:00 2026-05-26T10:33:50+00:00

I am using SSMS 2008 and I have the following scalar function to take

  • 0

I am using SSMS 2008 and I have the following scalar function to take a text string and remove all metatags from Microsoft Word. The tags are enclosed in “<…>” and there can be any number of tags / record in one column.

I created this scalar function to update each row in this column.

create function dbo.ufn_StripHTML
    (   @Input      varchar(max),
        @Delimiter  char(1)
    )
returns varchar(max)
as

begin

    declare @Output varchar(max)
    select  @Input = replace(replace(@input, '<', @Delimiter), '>', @Delimiter)

    select @Output = isnull(@Output, '') + s
    from    (    select   row_number() over (order by n.id asc) [i],
                 substring(@Delimiter + @Input + @Delimiter, n.id + 1, charindex(@Delimiter, @Delimiter + @Input + @Delimiter, n.id + 1) - n.id - 1) [s]
            from    [evolv_cs].[dbo].[progress_note] n
            where   n.id = charindex(@Delimiter, @Delimiter + @Input + @Delimiter, n.id) and
                 n.id <= len(@Delimiter + @Input)
            ) d
    where i % 2 = 1

    return @Output

end

This scalar function would work if [progress_note] had an “id” int column. But it does not and I cannot modify this table either, by adding an int column. So the problem is that I am trying to use this function on a temp table.

So I tried creating a view based on this table and then adding a PK int column to it. Because when I tried to create the view with this additional PK int column (“id”), it gave me an error:

Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'identity'.

But ALTER VIEW does not support adding columns. Is there another way to do this? Here is my original temp table I am trying to modify:

select [progress_note].[note_text], [progress_note].[event_log_id]
INTO #TEMP_PN
from [evolv_cs].[dbo].[progress_note]
group by [progress_note].[event_log_id], [progress_note].[note_text]

[note_text] is varchar(max) and event_log_id is uniqueidentifier. So [note_text] contains a bunch of “<” and “>” chars. How can I modify this function to make it a table function?

Of course, if I try to replace [progress_note] table with #TEMP_PN in this function, it will error because it won’t recognize it. So how can I modify this function for my case?

Meanwhile, I developed a table function which accepts and outputs a table parameter. It does not error, but it does not return the parsed data I was hoping for either. What is missing?

CREATE TYPE dbo.MyTableType AS TABLE 
(
    col1 int identity(1,1) NOT NULL,
    col2 varchar(max) NULL
)
GO

CREATE TABLE [dbo].[MyTable] (
    [col1] [int] identity(1,1) NOT NULL,
    [col2] [varchar](max) NULL
    )   
GO

create PROC usp_AddRowsToMyTable @MyTableParam MyTableType READONLY, @Delimiter varchar(30)
    as
    INSERT INTO MyTable([col2])
    SELECT [col2]   
    FROM @MyTableParam

    --update MyTable
    --set col2 = replace(replace(MyTable.col2, '<', @Delimiter), '>', @Delimiter)
    select s, i, t
    from(
    select MyTableInput.col1 [i],
    replace(replace(MyTable.col2, '<', @Delimiter), '>', @Delimiter) as t,
    substring(@Delimiter + MyTableInput.col2 + @Delimiter, MyTable.col1 + 1, 
    charindex(@Delimiter, @Delimiter + MyTableInput.col2 + @Delimiter, MyTable.col1 + 1) - MyTable.col1 - 1) [s]
    from MyTable
    inner join MyTable as MyTableInput on MyTable.col1 = MyTableInput.col1
    where MyTable.col1 = CHARINDEX(@Delimiter, @Delimiter + MyTableInput.col2 + @Delimiter, MyTable.col1)
     and MyTable.col1 <= LEN(@Delimiter + MyTableInput.col2)
) d


DECLARE @MyTable MyTableType

INSERT INTO @MyTable(col2)
VALUES ('<h><dsf>2000<h><dsf>'),
    ('<sd><dsf>2001'),
    ('2002<vnv><dsf>'),
    ('<gsd><dsf>2003<h><dsf>'),
    ('<eefs><dsf><h><dsf>2004<dfgd><dsf>')

EXEC dbo.usp_AddRowsToMyTable @MyTableParam = @MyTable, @Delimiter = '|'
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T10:33:50+00:00Added an answer on May 26, 2026 at 10:33 am

    Not sure I’m understanding your question, but here is how you would modify your function so that it returns a table (it’s called a Table-Valued Function):

    create function dbo.ufn_StripHTML 
        (   @Input      varchar(max), 
            @Delimiter  char(1) 
        ) 
    returns @retYourNewTable table
    (
        id int primary key clustered not null,
        yoursecond column varchar(100) null,
        ....
    ) 
    as
    ....
    

    Is this what you’re looking for?

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am using SSMS 2008 and I have the following Scalar function to take
We're using SqlServer 2008. In SSMS, queries on the full text catalog might take
With SQL Server 2005 using SSMS, when I run this: SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel
I have the following query which works fine in SSMS. Im using LinqPad (
I have a custom Keyboard Query Shortcut in SSMS (2008) with the following t-sql...
How to save query result using T-SQL in a csv file in SSMS 2008?
Im using SQL Server Management Studio 2008 (ssms.exe) connected with a local SQL Server
I am using SQL Server 2008 Enterprise for development. I find from SQL Server
I have a report that renders data returned from a stored procedure. Using profiler
All of the following processing takes place on the localmachine: I have a source

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.