The trick here is to realize that these characters that you see in the question with the "accents" aren't really _the_ characters (i.e. "These aren't the <del>droids</del>characters you are looking for" ;-) ). The "accents" are various types of notations indicating things like: * vowels (lines and dots that are typically under the letters) * pronunciation (dots that are usually inside or above letters that indicate whether it is "b" vs "v", or "s" vs "sh") * punctuation * cantillation (how it should be sung) The actual Hebrew letters are what is shown in the stripped down version (i.e. the end result of what is being requested here). Getting from those base characters to what the first line (with the vowels, etc) shows is a matter of adding one or more "accents". Unicode (and UCS-2 apparently) allows for some characters to overlay another non-overlay character when adjacent to them. Meaning: SELECT DATALENGTH(N'מַ֖'); -- character taken from original given text Returns: 6 not `2` as most people would expect from seeing a single, double-byte character. So maybe we try to find what character is there by doing: SELECT UNICODE(N'מַ֖'); which returns: 1502 Ok. So what happens if we remove that base character? SELECT REPLACE(N'מַ֖' COLLATE Hebrew_BIN2, NCHAR(1502) COLLATE Hebrew_BIN2, ''); That returns the two remaining characters (not easy to see here so run the above `REPLACE` and you will see them): ַ֖ Hence, we need to strip out each individual code-point that is one of these "extra" overlay characters (found at: http://unicode-table.com/en/search/?q=hebrew) and that will leave us with the base characters. We can do that via: <!-- language: lang-sql --> CREATE FUNCTION dbo.RemoveHebrewAccents (@texTwerbeH NVARCHAR(MAX)) RETURNS NVARCHAR(MAX) WITH SCHEMABINDING AS BEGIN WITH base (dummy) AS ( SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 ), nums AS ( -- we will want to generate code points 1425 - 1479 SELECT TOP (55) ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS [Num] FROM base b1 CROSS JOIN base b2 ) SELECT @texTwerbeH = REPLACE(@texTwerbeH COLLATE Hebrew_BIN2, NCHAR(1424 + nums.[Num]) COLLATE Hebrew_BIN2, '') FROM nums; RETURN @texTwerbeH; END; And then we can test it with the original text as follows: <!-- language: lang-sql --> DECLARE @Hebrew NVARCHAR(200) = N'בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ'; SELECT dbo.RemoveHebrewAccents(@Hebrew); Returns: בראשית ברא אלהים את השמים ואת הארץ == --- Additional notes: * Technically, there is a set of code-points between 64298 and 64334 that do have _some_ vowels and pronunciation "accents" built into the character. If those need to be handled, that can be a second step in the function to do a simple replacement of those characters. * It seems that these accent, punctuation, etc code-points only match when using a binary collation. Even using `Hebrew_100_CS_AS_KS_WS_SC` did not match them. But the following did work: `Hebrew_BIN`, `Hebrew_BIN2`, `Latin1_General_BIN`, and `Latin1_General_BIN2`. In the function I ended up using `Hebrew_BIN2`. * For anyone who is curious, the Hebrew sample text is actually Bereishis 1:1 (that is also the first word on the right-side as Hebrew is read right-to-left; in English it would be "Genesis 1:1" though that is not a direct translation of the word, just the name of the first book of the Torah / Bible; the direct translation is "in the beginning"): > In the beginning of God's creating the heavens and the Earth