Use NVARCHAR(size)
datatype and prefix string literal with N
:
CREATE TABLE #tab(col NVARCHAR(100));
INSERT INTO #tab(col) VALUES (N'👍 🖒 🖓 🖕 🗑 🛦 ⁉ 😎 😔 😇 😥 😴 😭');
SELECT *
FROM #tab;
db<>fiddle demo
Output:
╔═════════════════════════════════╗
║ col ║
╠═════════════════════════════════╣
║ 👍 🖒 🖓 🖕 🗑 🛦 ⁉ 😎 😔 😇 😥 😴😭 ║
╚═════════════════════════════════╝
EDIT:
SQL Server 2019 and forward supports UTF-8 collation:
CREATE TABLE t(col VARCHAR(100) COLLATE Latin1_General_100_CI_AI_SC_UTF8);
-- column's data type is VARCHAR!
-- collate could be set on column/database/instance level
INSERT INTO t(col) VALUES (N'☢️');
SELECT * FROM t;
-- col
-- ☢️
db<>fiddle demo – SQL Server 2019